Làm thế nào để tạo một Hướng dẫn mới trong thủ tục được lưu trữ?


93

Tôi hiện có một thủ tục được lưu trữ trong đó tôi muốn chèn các hàng mới vào bảng.

insert into cars
(id, Make, Model)
values('A new Guid', "Ford", "Mustang")

Vì vậy, khóa chính 'id' là một Hướng dẫn. Tôi biết cách tạo Hướng dẫn mới trong mã C # nhưng trong quy trình được lưu trữ, tôi không chắc cách tạo Hướng dẫn mới cho các giá trị khóa chính.

Câu trả lời:


178

Với SQL Server, bạn có thể sử dụng hàm NEWID . Bạn đang sử dụng C # nên tôi giả sử rằng bạn đang sử dụng SQL Server. Tôi chắc chắn rằng hệ thống cơ sở dữ liệu khác có chức năng tương tự.

select NEWID()

Nếu bạn đang sử dụng Oracle thì bạn có thể sử dụng SYS_GUID()hàm. Kiểm tra câu trả lời cho câu hỏi này: Tạo GUID trong Oracle



12

Bạn đã không hỏi về vấn đề này trong câu hỏi của mình, nhưng tôi nghĩ cần chỉ ra rằng việc sử dụng GUID cho khóa chính không phải lúc nào cũng là một ý kiến ​​hay. Mặc dù đơn giản nhưng nó có thể ảnh hưởng đến hiệu suất khi GUID được sử dụng trong một chỉ mục. Bạn đã cân nhắc sử dụng cột Danh tính là một giá trị số nguyên để thay thế chưa?

Đây là một vài bài báo có thể hữu ích để đọc.


1
Vâng tôi đồng ý với bạn. Tuy nhiên, tôi đang làm việc trên một cơ sở dữ liệu mà người khác đã phát triển. Tất cả các bảng trước đều sử dụng Hướng dẫn làm khóa chính nên tôi chỉ cố gắng nhất quán. Mặc dù đối với các bảng mới, có lẽ tôi nên đánh giá theo từng trường hợp. Cảm ơn thông tin mặc dù.
Mr Cricket

1

Trong MySQL, nó là UUID (). vì vậy truy vấn sẽ là:

insert into cars
(id, Make, Model)
values(UUID(), "Ford", "Mustang")

nếu bạn muốn sử dụng lại uuid, bạn có thể làm như sau:

set @id=UUID();
insert into cars
(id, Make, Model)
values(@id, "Ford", "Mustang");
select @id;

cả hai đều được thử nghiệm trong mysql
Fusca Software

1

Theo định dạng của câu hỏi (phát hiện bàn đạp!)

insert into cars
  (id, Make, Model)
  values(NEWID(), "Ford", "Mustang")
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.