【发布时间】:2011-07-21 14:27:40
【问题描述】:
我有一个包含两个 mysql 查询的代码。DELETE FROM my_table WHERE user_id=some_numberINSERT INTO my_table (user_id, ... ) VALUES(some_number, ...)
字段 user_id 是唯一的。
在极少数情况下,插入失败,声称出现重复条目。我的第一直觉让我相信 DELETE 没有完成,现在插入试图插入并且我得到一个重复的条目。这可能吗?我怎样才能避免这种情况?你能想到不同的解释吗?
更新:我删除的原因是因为我想删除我第一次没有更新/插入的所有数据。另外,我认为重要的是要说明大多数数据保持不变。
【问题讨论】:
-
这可能是一个竞争条件,两个进程同时运行相同 ID 的这两个语句吗?
-
您可能对 REPLACE 和 INSERT ... ON DUPLICATE KEY UPDATE 语句感兴趣
-
DELETE 可能会失败?执行后是否有一些检查?