Ini adalah kesalahpahaman.
The UNIQUE
kendala tidak tepat apa maumu. Beberapa NULL
nilai dapat hidup berdampingan dalam kolom yang ditentukan UNIQUE
.
Panduan:
Secara umum, batasan unik dilanggar ketika ada lebih dari satu baris dalam tabel di mana nilai semua kolom yang termasuk dalam batasan sama. Namun, dua nilai nol tidak dianggap sama dalam perbandingan ini. Itu berarti bahkan dengan adanya batasan unik, dimungkinkan untuk menyimpan baris duplikat yang berisi nilai nol di setidaknya salah satu kolom dibatasi. Perilaku ini sesuai dengan standar SQL, tetapi kami telah mendengar bahwa database SQL lain mungkin tidak mengikuti aturan ini. Jadi berhati-hatilah saat mengembangkan aplikasi yang dimaksudkan untuk portabel.
Penekanan saya yang berani.
Ketahuilah bahwa tipe karakter mengizinkan string kosong (''
), yaitu bukan sebuah NULL
nilai dan akan memicu pelanggaran unik seperti nilai non-null lainnya saat dimasukkan lebih dari satu baris.