2020年10月26日 星期一

mysql unique index null 不計

 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()來判斷


沒有留言:

張貼留言

如何判斷現在FORM是在 insert mode? 還是 update mode?

只要用  if (empty({primary_key})) 就可以知道是否為新增模式了。 如果 {promary_key} 是空白的,那麼就是在新增模式;反之,就是更新模式。 以上。