จะสร้าง Guid ใหม่ในขั้นตอนการจัดเก็บได้อย่างไร?


95

ขณะนี้ฉันมีขั้นตอนการจัดเก็บที่ฉันต้องการแทรกแถวใหม่ลงในตาราง

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

ดังนั้นคีย์หลัก 'id' จึงเป็น Guid ฉันรู้วิธีสร้าง Guid ใหม่ในรหัส C # แต่ภายในขั้นตอนการจัดเก็บฉันไม่แน่ใจว่าจะสร้าง Guids ใหม่สำหรับค่าคีย์หลักได้อย่างไร

คำตอบ:


180

กับ SQL Server คุณสามารถใช้ฟังก์ชั่นnewid คุณกำลังใช้ C # ดังนั้นฉันจึงถือว่าคุณกำลังใช้ SQL Server ฉันแน่ใจว่าระบบฐานข้อมูลอื่นมีฟังก์ชันที่คล้ายกัน

select NEWID()

หากคุณใช้ Oracle คุณสามารถใช้SYS_GUID()ฟังก์ชันนี้ได้ ดูคำตอบสำหรับคำถามนี้: สร้าง GUID ใน Oracle



12

คุณไม่ได้ถามเกี่ยวกับเรื่องนี้ในคำถามของคุณ แต่ฉันคิดว่ามันคุ้มค่าที่จะชี้ให้เห็นว่าการใช้ GUID สำหรับคีย์หลักไม่ใช่ความคิดที่ดีเสมอไป แม้ว่าจะเรียบง่าย แต่ก็อาจส่งผลต่อประสิทธิภาพเมื่อใช้ GUID ในดัชนี คุณได้พิจารณาใช้คอลัมน์ Identityที่เป็นค่าจำนวนเต็มแทนหรือไม่?

ต่อไปนี้เป็นบทความสองสามข้อที่อาจเป็นประโยชน์ในการอ่าน


1
ใช่ฉันเห็นด้วยกับคุณ. อย่างไรก็ตามฉันกำลังทำงานกับฐานข้อมูลที่คนอื่นพัฒนาขึ้น ตารางก่อนหน้านี้ทั้งหมดใช้ Guid เป็นคีย์หลักดังนั้นฉันแค่พยายามทำให้สอดคล้องกัน แม้ว่าสำหรับตารางใหม่ฉันควรประเมินเป็นกรณี ๆ ไป ขอบคุณสำหรับข้อมูล
Mr Cricket

1

ใน MySQL เป็น UUID () ดังนั้นคำถามจะเป็น:

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

หากคุณต้องการใช้ uuid ซ้ำคุณสามารถทำได้ดังนี้:

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

ทั้งสองทดสอบใน mysql
Fusca Software

1

ในรูปแบบของคำถาม (ชี้คนอวดรู้!)

insert into cars
  (id, Make, Model)
  values(NEWID(), "Ford", "Mustang")
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.