我正在使用PHP。
请问什么是将新记录插入具有唯一字段的数据库的正确方法。我正在批量插入很多记录,我只想插入新记录,并且我不想重复条目有任何错误。
有没有唯一方法可以首先进行SELECT并查看条目是否在INSERT之前已经存在-并且仅在SELECT不返回任何记录时才插入INSERT?我希望不是。
我想以某种方式告诉MySQL忽略这些插入而没有任何错误。
谢谢
如果在重复记录时不采取任何措施,则可以使用INSERT … IGNORE语法。
如果要用相同密钥的新记录覆盖旧记录,则可以使用REPLACE INTO语法。
或者,如果要对记录执行更新,而在遇到重复记录时可以使用INSERT … ON DUPLICATE KEY UPDATE语法。
编辑:以为我会添加一些示例。
假设您有一个tbl由两列id和命名的表value。只有一个条目,id = 1,value = 1。如果运行以下语句:
tbl
id
value
REPLACE INTO tbl VALUES(1,50);
您仍然有一条记录,id = 1值= 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且值为200的记录。