MySQL'de boş değerlere izin veren benzersiz kısıtlama


125

Ürün kodlarını depolayan bir alanım var. Kodlar benzersizdir, ancak bazı ürünlerin bir kodu yoktur. Kodları icat edemem çünkü bunlar sağlayıcı kodları.

MySQL'de bu tür bir kısıtlama mümkün müdür?

Depolanan prosedürler ve tetikleyicilerle bir noob'um, bu nedenle çözüm bunlardan birini içeriyorsa, lütfen sabırlı olun.

Güncelleme: Sütun boş DEĞİLDİR. Bu yüzden bunu yapamadım.



@AmirAliAkbari Bu ikisinin "olası kopya" olarak birbirine bağlanması komik. Yine de bu daha eski. :)
Pijusn

Yanıtlar:


182

Evet, bunu yapabilirsiniz. MySQL referansına bakın (sürüm 5.5) .

UNIQUE indeksi, indeksteki tüm değerlerin farklı olması gerektiği şekilde bir kısıt oluşturur. Mevcut bir satırla eşleşen anahtar değerine sahip yeni bir satır eklemeye çalışırsanız bir hata oluşur. Tüm motorlar için, UNIQUE indeksi, NULL içerebilen sütunlar için birden çok NULL değerine izin verir.


8
Teşekkürler. Bunu null yapılabilir hale getirmeliyim
The Disintegrator

django modelinde bu problem vardı. Null yapılabilir hale getirmek çalışır. Teşekkürler
Shrey

13

Evet, ürün kodu sütununu null yapılabilir yaparsanız (ile bildirilmez NOT NULL), benzersiz anahtar NULLürün kodlarını içeren birden çok satıra izin verir .


Teşekkürler. Bunu null yapılabilir hale getirmeliyim
The Disintegrator

8

MySQL, birden fazla satırın NULLbenzersiz bir sütunda değerine sahip olmasına izin verir .


Teşekkürler. Bunu null yapılabilir hale getirmeliyim
The Disintegrator

@MianAnjum kalın: CREATE TABLE table( keyint (11) NOT NULL AUTO_INCREMENT, fieldtinyint (1) DEFAULT NULL )
Paul Nowak
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.