使用INSERT IGNORE和NULL值在Mysql中插入记录

时间:2010-06-10 16:36:27

标签: mysql insert duplicates

我有一个分区表InnoDB,有几个字段。 我试图避免重复插入。

让我们说:

Field1 int null
Field2 int null
Field3 int null
Field4 int null
Field5 int null

我在这些字段上创建了一个UNIQUE索引。 我尝试插入一些带有NULL值的记录,然后尝试在MySql上使用IGNORE功能重新插入它们。

不幸的是,它似乎在使用NULL值时复制了记录。 如果我尝试使用零而不是NULL情况一切正常,但我确实需要空值。

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

这就是NULL的工作原理。请记住,两个NULL值的相等比较结果为NULL(在逻辑表达式中计算结果为FALSE)。因此,即使您对列Field1具有允许NULL值的唯一约束,该表也可以具有多条记录,其中Field1的值为NULL。如果要以不同方式处理NULL,除了唯一约束之外,还需要编写BEFORE INSERT / UPDATE触发器,以检查表中是否有Field1 IS为空的记录(并引发错误以防止更新)。

相关问题