Bagaimana cara menghasilkan Panduan baru dalam prosedur tersimpan?


94

Saat ini saya memiliki prosedur tersimpan di mana saya ingin memasukkan baris baru ke dalam tabel.

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

Jadi kunci utama 'id' adalah Guid. Saya tahu cara membuat Panduan baru dalam kode C # tetapi dalam prosedur tersimpan saya tidak yakin cara membuat Panduan baru untuk nilai kunci utama.

Jawaban:


179

Dengan SQL Server Anda dapat menggunakan fungsi NEWID . Anda menggunakan C # jadi saya berasumsi bahwa Anda menggunakan SQL Server. Saya yakin sistem database lain memiliki fungsi serupa.

select NEWID()

Jika Anda menggunakan Oracle maka Anda dapat menggunakan SYS_GUID()fungsinya. Lihat jawaban untuk pertanyaan ini: Hasilkan GUID di Oracle



12

Anda tidak menanyakan hal ini dalam pertanyaan Anda, tetapi saya pikir ada baiknya menunjukkan bahwa menggunakan GUID untuk kunci utama tidak selalu merupakan ide yang baik. Meskipun sederhana, ini dapat memengaruhi kinerja saat GUID digunakan dalam indeks. Pernahkah Anda mempertimbangkan untuk menggunakan kolom Identity yang merupakan nilai integer?

Berikut beberapa artikel yang mungkin berguna untuk dibaca.


1
Ya aku setuju denganmu. Namun saya sedang mengerjakan database yang dikembangkan orang lain. Semua tabel sebelumnya menggunakan Guid sebagai kunci utama jadi saya hanya mencoba untuk konsisten. Meskipun untuk tabel baru mungkin saya harus mengevaluasi kasus per kasus. Terima kasih atas infonya.
Mr Cricket

1

Di MySQL itu UUID (). jadi kueri akan menjadi:

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

jika Anda ingin menggunakan kembali uuid Anda dapat melakukannya seperti ini:

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

keduanya diuji di mysql
Fusca Software

1

Dalam format pertanyaan (lihat pedant!)

insert into cars
  (id, Make, Model)
  values(NEWID(), "Ford", "Mustang")
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.