คำตอบโดยเครก Ringerถูกต้อง นี่คือข้อมูลเพิ่มเติมเล็กน้อยสำหรับ Postgres 9.1 และใหม่กว่า ...
นามสกุลใช้ได้หรือไม่
คุณสามารถติดตั้งส่วนขยายได้หากสร้างไว้แล้วสำหรับการติดตั้ง Postgres ของคุณ ( คลัสเตอร์ของคุณใน Postgres lingo) ตัวอย่างเช่นฉันพบส่วนขยายuuid-ossp ที่รวมเป็นส่วนหนึ่งของโปรแกรมติดตั้งสำหรับ Mac OS X กรุณาระบุโดย EnterpriseDB.com ส่วนขยายใด ๆไม่กี่โหลอาจใช้ได้
หากต้องการดูว่าส่วนขยายuuid-osspมีอยู่ในคลัสเตอร์ Postgres ของคุณหรือไม่ให้เรียกใช้ SQL นี้เพื่อสืบค้นpg_available_extensions
แค็ตตาล็อกระบบ:
SELECT * FROM pg_available_extensions;
ติดตั้งส่วนขยาย
ในการติดตั้งส่วนขยายที่เกี่ยวข้องกับUUIDนั้นให้ใช้คำสั่งCREATE EXTENSIONตามที่เห็นใน SQL นี้:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
ระวัง:ฉันพบอักขระเครื่องหมายคำพูดรอบชื่อส่วนขยายที่จำเป็นแม้ว่าจะมีเอกสารกำกับตรงกันข้าม
คณะกรรมการมาตรฐาน SQL หรือทีม Postgres เลือกชื่อแปลก ๆ สำหรับคำสั่งนั้น สำหรับความคิดของฉันพวกเขาควรเลือกบางสิ่งเช่น "ติดตั้งส่วนขยาย" หรือ "ใช้ส่วนขยาย"
ตรวจสอบการติดตั้ง
คุณสามารถตรวจสอบว่าติดตั้งส่วนขยายสำเร็จแล้วในฐานข้อมูลที่ต้องการโดยเรียกใช้ SQL นี้เพื่อสอบถามpg_extension
แคตตาล็อกระบบ:
SELECT * FROM pg_extension;
UUID เป็นค่าเริ่มต้น
สำหรับข้อมูลเพิ่มเติมดูคำถาม: ค่าเริ่มต้นสำหรับคอลัมน์ UUID ใน Postgres
วิธีเก่า ๆ
ข้อมูลข้างต้นใช้คุณสมบัติส่วนขยายใหม่ที่เพิ่มใน Postgres 9.1 ในเวอร์ชันก่อนหน้าเราต้องค้นหาและเรียกใช้สคริปต์ในไฟล์. sql คุณลักษณะส่วนขยายได้รับการเพิ่มเพื่อให้การติดตั้งง่ายขึ้นซื้อขายงานอีกเล็กน้อยสำหรับผู้สร้างส่วนขยายสำหรับการทำงานน้อยลงในส่วนของผู้ใช้ / ผู้บริโภคของส่วนขยาย ดูโพสต์บล็อกของฉันสำหรับการสนทนาเพิ่มเติม
ประเภทของ UUIDs
uuid_generate_v4()
โดยวิธีการที่รหัสในคำถามที่เรียกฟังก์ชั่น สิ่งนี้สร้างประเภทที่เรียกว่าเวอร์ชัน 4ซึ่งเกือบ 128 บิตทั้งหมดจะถูกสร้างแบบสุ่ม แม้ว่าสิ่งนี้จะใช้ได้ดีสำหรับการใช้งานที่ จำกัด ในชุดของแถวที่มีขนาดเล็กลงหากคุณต้องการขจัดความเป็นไปได้ของการชนให้ใช้ UUID "version" อื่น
ตัวอย่างเช่นเวอร์ชันดั้งเดิม1รวมที่อยู่ MACของโฮสต์คอมพิวเตอร์กับวันที่และเวลาปัจจุบันตามอำเภอใจโอกาสของการชนจะไม่มีจริง
สำหรับการสนทนาเพิ่มเติมดูคำตอบของฉันในคำถามที่เกี่ยวข้อง