【发布时间】:2010-01-09 03:23:02
【问题描述】:
当我尝试在 MYSQL 中运行“INSERT IGNORE ...”以仅将一个变量添加到包含多个选项的表中时,在第一次插入后,它拒绝工作。它说“插入的行:0”并且没有将我的新值插入数据库。我相信这是因为已经有一个“无”值的条目,而 MYSQL 不允许复制空字段。这似乎是一种奇怪的行为(只要两个插入不完全相同),所以我想知道是否有某种方法可以避免这种情况。
【问题讨论】:
当我尝试在 MYSQL 中运行“INSERT IGNORE ...”以仅将一个变量添加到包含多个选项的表中时,在第一次插入后,它拒绝工作。它说“插入的行:0”并且没有将我的新值插入数据库。我相信这是因为已经有一个“无”值的条目,而 MYSQL 不允许复制空字段。这似乎是一种奇怪的行为(只要两个插入不完全相同),所以我想知道是否有某种方法可以避免这种情况。
【问题讨论】:
这两个INSERT 不必完全相同,只要主键列相同即可。
INSERT IGNORE 如果已经存在具有相同主键的行,则将忽略插入。
如果您使用INSERT 而不是INSERT IGNORE,则会收到错误消息(主键重复)。
如果您想更新现有行,可以使用REPLACE。
无论哪种方式,每个主键只能有一行。
【讨论】: