MMTTMM
2019-11-27 14:03:44
我有一個(gè)電子郵件列,我想保持唯一性。但我也希望它接受空值。這樣我的數(shù)據(jù)庫(kù)可以有2個(gè)空電子郵件嗎?
3 回答

胡說(shuō)叔叔
TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊
是的,MySQL在具有唯一約束的列中允許多個(gè)NULL。
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;
結(jié)果:
x
NULL
NULL
1
并非對(duì)于所有數(shù)據(jù)庫(kù)都是如此。例如,SQL Server 2005和更早版本僅在具有唯一約束的列中允許單個(gè)NULL值。

ibeautiful
TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
避免可為空的唯一約束。您始終可以將列放在新表中,使其變?yōu)榉强涨椅ㄒ?,然后僅在具有值時(shí)填充該表。這樣可以確保對(duì)列的任何鍵依賴關(guān)系都可以正確實(shí)施,并避免了可能由null引起的任何問(wèn)題。
添加回答
舉報(bào)
0/150
提交
取消