SQL kısıtlamaları tablosundaki her satır için geçerlidir. Belirli veri değerlerine göre bunları koşullu yapamazsınız. yerine sıfır NULL
kullanabilirsiniz eğer
Ancak, benzersiz kısıtlama etrafında alabilirsiniz. Benzersiz bir kısıtlama, NULL
olan birden çok girdiye izin verir. nedeni benzersizliği var olabilir hiçbir iki eşit değerler anlamına gelmesidir. Eşitlik, value1 = value2
'un doğru olması gerektiği anlamına gelir. Ama SQL, NULL = NULL
gerçek bilinmeyen değildir.
CREATE TABLE MyTable (id SERIAL PRIMARY KEY, userid INT, data VARCHAR(64));
INSERT INTO MyTable (userid, data) VALUES ( 1, 'foo');
INSERT INTO MyTable (userid, data) VALUES ( 1, 'bar');
INSERT INTO MyTable (userid, data) VALUES (NULL, 'baz');
Şimdiye kadar iyi, şimdi aşağıdaki ifadeleri benzersiz kısıtlamayı ihlal eden düşünebilir, ama yok:
INSERT INTO MyTable (userid, data) VALUES ( 1, 'baz');
INSERT INTO MyTable (userid, data) VALUES (NULL, 'foo');
INSERT INTO MyTable (userid, data) VALUES (NULL, 'baz');
INSERT INTO MyTable (userid, data) VALUES (NULL, 'baz');
müthiş, teşekkür! Farklı bir çözüm kullandım dediğim gibi, ama bana sorusuma mükemmel bir cevap verdiniz ve şüphesiz ben bunu gelecekte kullanacağım =) – Mala