Batasan unik yang memungkinkan nilai kosong di MySQL


125

Saya memiliki bidang yang menyimpan kode produk. Kodenya unik, tetapi beberapa produk tidak memiliki kode. Saya tidak dapat menemukan kode karena itu adalah kode penyedia.

Apakah batasan semacam ini mungkin terjadi di MySQL?

Saya seorang noob dengan prosedur dan pemicu tersimpan, jadi jika solusinya melibatkan salah satu dari ini, harap bersabar.

Pembaruan: Kolom ini TIDAK Null. Itulah mengapa saya tidak dapat melakukan ini.



@AmirAliAkbari Sungguh lucu bagaimana keduanya terhubung satu sama lain sebagai "kemungkinan duplikat". Tapi yang ini lebih tua. :)
Pijusn

Jawaban:


182

Ya, Anda bisa melakukan ini. Lihat referensi MySQL (versi 5.5) .

Indeks UNIQUE membuat batasan sehingga semua nilai dalam indeks harus berbeda. Kesalahan terjadi jika Anda mencoba menambahkan baris baru dengan nilai kunci yang cocok dengan baris yang ada. Untuk semua mesin, indeks UNIQUE memungkinkan beberapa nilai NULL untuk kolom yang dapat berisi NULL.


8
Terima kasih. Saya harus membuatnya menjadi null
The Disintegrator

punya masalah ini dalam model django. Menjadikannya nullable berfungsi. Terima kasih
Shrey

13

Ya, jika Anda membuat kolom kode produk menjadi nullable (tidak dideklarasikan dengan NOT NULL), kunci unik akan memungkinkan beberapa baris dengan NULLkode produk.


Terima kasih. Saya harus membuatnya menjadi null
The Disintegrator

8

MySQL masih memungkinkan beberapa baris memiliki nilai NULLdalam kolom unik.


Terima kasih. Saya harus membuatnya menjadi null
The Disintegrator

@MianAnjum dicetak tebal: CREATE TABLE table( keyint (11) NOT NULL AUTO_INCREMENT, fieldtinyint (1) DEFAULT NULL )
Paul Nowak
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.