atau - buat indeks dan jangan berasumsi bahwa nilainya unik
Itu adalah aman untuk mengasumsikan bahwa nilai adalah unik, jika Anda memiliki indeks unik yang ditentukan. Begitulah cara batasan unik diterapkan (saat ini, dan mungkin juga di semua versi mendatang).
Mendefinisikan UNIQUE
kendala secara efektif sama (hampir, lihat di bawah) sebagai membuat indeks unik tanpa menentukan jenis indeks. Dan, saya mengutip manualnya:
Pilihannya adalah btree, hash, Gist, dan gin. Metode defaultnya adalah btree.
Menambahkan batasan hanyalah cara kanonik yang tidak akan rusak di versi mendatang yang bisa diimplementasikan secara berbeda. Itu saja.
Dan tidak, batasan unik hanya dapat diimplementasikan dengan btree basic dasar indeks di semua versi hingga dan termasuk PostgreSQL v14. Saya mengutip paragraf "ADD table_constraint_using_index" dalam manual di sini:
Indeks tidak boleh memiliki kolom ekspresi atau menjadi indeks parsial. Juga, itu harus berupa indeks b-tree dengan pengurutan pengurutan default.
###Perbedaan lainnya
- Pembatasan unik dapat ditangguhkan . Itu tidak mungkin untuk indeks unik. Lihat
SET CONSTRAINTS
perintah dan ikuti tautan untuk informasi lainnya.
Kunci asing harus mereferensikan kolom yang merupakan kunci utama atau membentuk batasan unik.
Bit terakhir tampaknya sudah ketinggalan zaman atau kesalahpahaman dari awal. Lihat:
- Nilai NULL untuk kolom referential_constraints.unique_constraint_* dalam skema informasi
Terkait:
- Apakah indeks unik lebih baik daripada batasan unik ketika saya membutuhkan indeks dengan kelas operator