mysql 裡面,unique index key如果含有 null,他並未計入唯一的檢查。還是可以接受兩筆以上的 null資料。
如果希望不能兩筆null資料,那就只好將 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;
Insert Into Table(A, B) Values (null, 2);
Insert Into Table(A, B) Values (null, 2);#should fail do to duplicate values
這種情形,mysql 還是允許。
若改成"",就可以由Index來限制唯一了!
Insert Into Table(A, B) Values ("", 2);
Insert Into Table(A, B) Values ("", 2);#should fail do to duplicate values
記得:這樣一來,使用程式在做判斷時,就要使用 empty()來判斷
沒有留言:
張貼留言