我有一個代碼有兩個mysql查詢。
DELETE FROM my_table WHERE user_id=some_number
INSERT INTO my_table (user_id, ...) VALUES(some_number, ...)
由於「重複項」刪除失敗後mysql插入
領域user_id是唯一的。
在極少數情況下插入失敗,聲稱發生了重複條目。我的第一本能讓我相信DELETE沒有完成,現在插入試圖插入,我得到一個重複的條目。這可能嗎?我怎樣才能避免這種情況?可以想象一個不同的解釋嗎?
更新:我刪除的原因是因爲我想刪除所有不是我第一次更新/插入的數據。另外,我認爲重要的是說大部分數據保持不變。
是否有可能是兩個進程同時爲同一個ID運行這兩個語句的競態條件? –
你可能有興趣在REPLACE和INSERT ... ON DUPLICATE KEY UPDATE語句 –
DELETE失敗可能嗎?執行後是否有一些檢查? – ascanio