这个SQL重复行是如何发生的?

时间:2012-04-21 12:28:37

标签: mysql sql duplicates

我有一个Flash游戏;用户有很多项目;每个项目都是数据库中表格中的一行,其中包含列:

id - user_id - item_type_id - quantity

每次用户获取项目时,我都会对数据库执行选择,以检查用户是否已拥有该项目类型的行。如果它不存在,则插入,否则增加数量并提交;一切都在交易中。

有时,当游戏流量过大时,会出现重复的项目行。现在,我执行选择以检查重复行以合并数量并删除重复的行。

  • 这个问题是怎么发生的?
  • 如何防止问题发生?

我正在使用MySQL。

2 个答案:

答案 0 :(得分:4)

您需要确保列对user_iditem_type_id上有唯一约束(索引)。否则,系统可以允许重复输入,就像您发现的那样。

答案 1 :(得分:1)

为避免在需要更新时尝试插入时出错,可以使用ON DUPLICATE子句。请参阅this链接,了解如何使用它。