php – 当涉及的一个字段为NULL时,MySQL错误地允许重复条目
使用InnoDB /
MySQLi,我有一个简单的表:mytable.该表有四个字段:id(primary,auto_inc),field1,field2,field3.所有这些都是BIGINT,除了id,可以是NULL.
我已经添加了如下所示的唯一约束: ALTER TABLE mytable ADD UNIQUE INDEX(field1,field3); 但是,我完全可以添加以下行,而不会生成任何错误.我想为此产生一个“重复”错误,但它不: INSERT INTO mytable VALUES (NULL,3,NULL) INSERT INTO mytable VALUES (NULL,NULL) 如果所有字段都具有非NULL值,则它仅生成“重复”错误 – 例如, INSERT INTO mytable VALUES (2,4) INSERT INTO mytable VALUES (2,4) 如果一个(或多个)字段具有NULL值,那么我怎么能告诉MySQL生成“重复”错误? 编辑:这是以前添加为MySQL的错误:http://bugs.mysql.com/bug.php?id=25544
你不能比较NULL(如果你比较NULL甚至NULL = NULL,结果总是FALSE)这个行为记录在
MySQL ref.
所以我认为唯一的方法是定义列NOT NULL或者在触发器中处理这个问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |