鐵律:UPDATE 直接修改 IDENTITY 欄位會報錯「無法更新識別欄位」。
ALTER TABLE t DROP COLUMN id;(或用 SSMS 設計師取消 Identity)ALTER TABLE t ADD id INT IDENTITY(1,1);缺點:大表鎖表久、需處理外鍵、權限、索引重建。
INSERT 陳述式(指定 ID)。DELETE 原列。SET IDENTITY_INSERT t ON; INSERT ...; SET IDENTITY_INSERT t OFF;運營人員刪除舊資料、重新錄入,避免資料庫層面風險。
MySQL AUTO_INCREMENT 欄位直接 UPDATE 交換值會因主鍵衝突失敗。採用「中間值法」三步走:
-- 交換 id=1 和 id=2 UPDATE t SET id = 0 WHERE id = 1; -- 1→0(中間值) UPDATE t SET id = 1 WHERE id = 2; -- 2→1 UPDATE t SET id = 2 WHERE id = 0; -- 0→2
測試結果:


同樣三步法,但實測發現:第一步 UPDATE ... SET id=0 WHERE id=1 雖顯示成功,後續語句卻報錯並回滾。原因未深究,建議改用方案 A(移除 AUTO_INCREMENT → 更新 → 重建)或方案 C。
SET FOREIGN_KEY_CHECKS=0)。