業務邏輯中有一個刪除操作,其中有兩條數據刪除時報錯Duplicate entry ‘xxx’ for key 'PRIMARY'
乍一看覺得不可思議,因為沒有聽說過DELETE語句會報錯重復主鍵的,都是在INSERT和UPDATE語句時就會報錯
去表里SELECT 查詢了一下,只有一條數據,直接在庫里執行DELETE語句,一樣報錯
百度了一圈,沒啥收獲
最后經過同事協助排查,發現由於該表設置了觸發器導致的
由於之前有兩張copy的備份表,三張表都設置了DELETE的觸發器,會在刪除數據時向同一張history表寫數據,因此在備份表刪過的數據會在history表里已經有了,且主鍵ID相同,因此刪除另一張表里同一條數據時會報錯Duplicate entry for key 'PRIMARY'。。。。(Mysql的報錯提示要是能區分開就好了)