【问题标题】:PHP script create duplicate entries on mysql if runs same time如果同时运行,PHP 脚本会在 mysql 上创建重复条目
【发布时间】:2011-09-24 21:29:52
【问题描述】:

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

有什么办法可以防止。

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

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    你必须

    【讨论】:

      【解决方案2】:

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

      您真正在寻找的是“INSERT ... ON DUPLICATE KEY UPDATE”: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 运行。

      【讨论】:

        【解决方案3】:

        为什么不直接插入并期待 1022 重复键错误?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-05
          相关资源
          最近更新 更多