ON DUPLICATE KEY 自動遞增異常
在MySQL 中,在將資料插入表時使用ON DUPLICATE KEY UPDATE 可能會導致意外行為具有自動遞增列。如同問題所述,可以觀察到自動遞增值在第一次插入時按預期遞增,但是,當觸發 ON DUPLICATE KEY 條件並插入新行時,自動遞增值顯得不規則。
這個問題的答案在於 MySQL 處理 ON DUPLICATE KEY UPDATE 的方式。如 MySQL 文件中所述,在此操作期間,MySQL 會對現有行執行更新,而不是插入新行。對於自動增量列,INSERT 語句會在套用更新之前增加自動增量值。但是,UPDATE 語句不會增加該值。
這裡有一個簡化的解釋:
因此,更新行中的自增列不會反映預期值如果插入新行,則會被分配。值得注意的是,不建議依靠自增列來實現無間隙。如果嚴格的順序編號至關重要,建議使用觸發器或輸出計算值來實現自訂邏輯,以維持所需的遞增行為。
以上是為什麼 MySQL 的自動增量在重複鍵更新時表現不佳?的詳細內容。更多資訊請關注PHP中文網其他相關文章!