Gunakan uuid
. PostgreSQL memiliki tipe asli karena suatu alasan.
Ini menyimpan uuid secara internal sebagai bidang biner 128-bit. Opsi lain yang Anda usulkan menyimpannya sebagai heksadesimal, yang sangat tidak efisien jika dibandingkan.
Tidak hanya itu, tetapi:
-
uuid
melakukan pengurutan bytewise sederhana untuk memesan.text
,char
danvarchar
pertimbangkan susunan dan lokal, yang tidak masuk akal untuk sebuah uuid. -
Hanya ada satu representasi kanonik dari
uuid
. Hal yang sama tidak berlaku untuk teks dll; anda harus mempertimbangkan hex huruf besar vs kecil, ada atau tidaknya{...-...}
s dll.
Tidak ada pertanyaan. Gunakan uuid
.
Satu-satunya tipe lain yang masuk akal adalah bytea
, yang setidaknya dapat digunakan untuk menyimpan 16 byte uuid secara langsung. Inilah yang akan saya lakukan jika saya menggunakan sistem yang tidak dapat mengatasi tipe data di luar set dasar, seperti semacam ORM yang benar-benar bodoh.