Yanıtlar:
Evet, MySQL, benzersiz bir kısıtlamaya sahip bir sütunda birden fazla NULL'a izin verir.
CREATE TABLE table1 (x INT NULL UNIQUE);
INSERT table1 VALUES (1);
INSERT table1 VALUES (1); -- Duplicate entry '1' for key 'x'
INSERT table1 VALUES (NULL);
INSERT table1 VALUES (NULL);
SELECT * FROM table1;
Sonuç:
x
NULL
NULL
1
Bu, tüm veritabanları için geçerli değildir. Örneğin, SQL Server 2005 ve daha eski sürümleri, yalnızca benzersiz bir kısıtlaması olan bir sütunda tek bir NULL değerine izin verir.
WHERE column IS NOT NULLMySQL sürümümde desteklenmediği için bana başarısız bile görünmüyor. Nereye bakabileceğimi bilen var mı?
Gönderen docs :
"BENZERSİZ bir dizin NULL içerebilen sütunlar için birden çok NULL değerine izin veriyor"
Bu, BDB dışındaki tüm motorlar için geçerlidir .
Yazarın başlangıçta bunun yinelenen değerlere izin verip vermediğini sorduğundan veya burada " NULLKullanırken yinelenen değerlere nasıl izin verilir UNIQUE?" Veya "Yalnızca bir UNIQUE NULLdeğere nasıl izin verilir ?"
Soru zaten cevaplandı, evet dizini NULLkullanırken yinelenen değerleriniz olabilir UNIQUE.
Ben "bir UNIQUE NULLdeğere nasıl izin verilir" için arama yaparken bu cevap tökezledi beri . Aynısını yaparken bu soruya rastlayabilecek herkes için, cevabımın geri kalanı sizin için ...
MySQL'de bir UNIQUE NULLdeğere sahip olamazsınız , ancak UNIQUEboş bir dizenin değeri ile ekleyerek bir boş değere sahip olabilirsiniz .
Uyarı: Dize dışındaki sayısal ve türler varsayılan olarak 0 veya başka bir varsayılan değer olabilir.
UNIQUEkısıtlamadan değil , kısıtlamadan dolayı başarısız olması NOT NULL. Bence bu cevap soru ile alakasız çünkü soru özellikle UNIQUEkısıtlama davranışı ile ilgili .
Null olabilecek benzersiz kısıtlamalardan kaçının. Sütunu her zaman yeni bir tabloya yerleştirebilir, boş olmayan ve benzersiz hale getirebilir ve daha sonra bu tabloyu yalnızca bir değeriniz olduğunda doldurabilirsiniz. Bu, sütuna herhangi bir tuş bağımlılığının doğru bir şekilde uygulanmasını sağlar ve boş değerlerin neden olabileceği sorunları önler.