INSERT ON DUPLICATE KEY UPDATE
INSERT INTO `table_name`
(`index_field`, `other_field_1`, `other_field_2`)
VALUES
('index_value', 'insert_value', 'other_value')
ON DUPLICATE KEY UPDATE
`other_field_1` = 'update_value',
`other_field_2` = VALUES(`other_field_2`);
這將 INSERT
轉換為 table_name
指定的值,但如果唯一鍵已經存在,它將更新 other_field_1
以獲得新值。
有時,當更新重複鍵時,使用 VALUES()
可以方便地訪問傳遞給 INSERT
的原始值而不是直接設定值。這樣,你可以使用 INSERT
和 UPDATE
設定不同的值。參見上面的示例,其中 other_field_1
在 INSERT
上設定為 insert_value
或在 UPDATE
上設定為 update_value
,而 other_field_2
始終設定為 other_value
。
要在重複鍵更新(IODKU)上插入工作的關鍵是包含唯一鍵的模式,該鍵將發出重複衝突的訊號。該唯一金鑰可以是主金鑰,也可以不是。它可以是單個列上的唯一鍵,也可以是多列(複合鍵)。