如果同时运行,PHP脚本会在mysql上创建重复的条目

时间:2011-06-29 06:47:56

标签: php mysql

我有一个php脚本,用于检查表中的特定唯一条目。如果该条目不存在,则为该数据创建一个新行,否则它只更新该条目的计数。我的脚本可以同时被击中(同一秒)。在这种情况下,脚本的两个实例一起检查并且找不到条目并尝试插入记录。在这种情况下,第二个实例会引发错误。

有没有办法防止这种情况发生。

使用this question中提到的方法会有帮助吗?

3 个答案:

答案 0 :(得分:3)

你必须

答案 1 :(得分:0)

MySQL支持“REPLACE”操作,该操作将删除现有行并重新创建它(可能不是您正在查找的内容):http://dev.mysql.com/doc/refman/5.0/en/replace.html

你真正想要的是“插入...重复主题更新”:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

他们在该页面上的第一个例子似乎就是你所描述的:

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

当INSERT导致主键或唯一键发生冲突,然后作为UPDATE运行时,它会起作用。

答案 2 :(得分:0)

为什么不继续INSERT并期待1022重复键错误?