我正在使用 PHP。
请问将新记录插入具有唯一字段的数据库的正确方法是什么。 我正在批量插入大量记录,我只想插入新记录,我不希望重复条目出现任何错误。
是否有唯一的方法首先进行 SELECT 并查看该条目是否在 INSERT 之前已经存在 - 并且仅在 SELECT 没有返回记录时才进行 INSERT?我希望不会。
我想以某种方式告诉 MySQL 忽略这些插入而不会出现任何错误。
谢谢
最佳答案
您可以使用 INSERT... IGNORE如果您不想在有重复记录时采取任何操作的语法。
您可以使用 REPLACE INTO如果您想用具有相同键的新记录覆盖旧记录,请使用语法。
或者,您可以使用 INSERT... ON DUPLICATE KEY UPDATE如果您想在遇到重复记录时对记录执行更新,请使用语法。
编辑:我想我会添加一些例子。
示例
假设您有一个名为 tbl
的表,其中包含两列 id
和 value
。有一个条目,id=1 和 value=1。如果您运行以下语句:
REPLACE INTO tbl VALUES(1,50);
您还有一条记录,id=1 value=50。请注意,整个记录首先被删除,然后重新插入。那么:
INSERT IGNORE INTO tbl VALUES (1,10);
操作成功执行,但没有插入任何内容。你仍然有 id=1 和 value=50。最后:
INSERT INTO tbl VALUES (1,200) ON DUPLICATE KEY UPDATE value=200;
您现在有一条 id=1 和 value=200 的记录。
关于php - MySQL - 忽略插入错误 : duplicate entry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/812437/