MYSQL避免两次插入同一行

时间:2012-04-14 14:34:33

标签: mysql sql

我有一个涉及ajax post请求的系统,该请求将一行插入表中。似乎有时ajax调用被调用两次,这意味着相同的数据在两个相邻的行中插入两次。

我计划首先添加查询以尝试选择具有相同数据的行,然后如果行数= 0则添加它。有没有更好的方法可以避免必须进行两次查询?

2 个答案:

答案 0 :(得分:3)

您可以在insert语句中使用INSERT IGNORE INTO语法或INSERT ... ON DUPLICATE KEY UPDATE。

如果使用INSERT IGNORE,则实际上不会插入行,如果它导致重复键。但该声明不会产生错误。它会生成警告。

INSERT IGNORE INTO mytable
    (primaryKey, field1, field2)
VALUES
    ('abc', 1, 2);

答案 1 :(得分:0)

我想说解决这个问题的最佳方法是在你的应用程序中使用一个临时令牌(它可以兼作CSRF令牌,你可能还需要它。)。

如果令牌与操作一起发送,则令牌失效,以使其无法重复。