我在PHP工作.
请问将新记录插入到具有唯一字段的DB中的正确方法是什么.我正在批量插入大量记录,我只想插入新的记录,我不希望重复条目有任何错误.
有没有办法首先进行SELECT并查看INSERT之前是否已经存在该条目 - 并且只有当SELECT不返回记录时才进行INSERT?我希望不是.
我想以某种方式告诉MySQL忽略这些插入而没有任何错误.
谢谢
zom*_*bat 160
如果您希望在存在重复记录时不执行任何操作,则可以使用INSERT ... IGNORE语法.
如果要使用具有相同键的新记录覆盖旧记录,则可以使用REPLACE INTO语法.
或者,如果要在遇到重复时更改记录,则可以使用INSERT ... ON DUPLICATE KEY UPDATE语法.
编辑:以为我会添加一些例子.
假设您有一个以tbl
两列命名的表,id
并且value
.有一个条目,id = 1和value = 1.如果您运行以下语句:
REPLACE INTO tbl VALUES(1,50);
Run Code Online (Sandbox Code Playgroud)
您仍然有一条记录,id = 1 value = 50.请注意,整个记录首先是DELETED,然后重新插入.然后:
INSERT IGNORE INTO tbl VALUES (1,10);
Run Code Online (Sandbox Code Playgroud)
操作成功执行,但未插入任何内容.你仍然有id = 1和值= 50.最后:
INSERT INTO tbl VALUES (1,200) ON DUPLICATE KEY UPDATE value=200;
Run Code Online (Sandbox Code Playgroud)
您现在拥有一条id = 1且值= 200的记录.
归档时间: |
|
查看次数: |
121705 次 |
最近记录: |