我有一個基本上有三列的表:user_id,設置和值。我試圖使用以下代碼:MySQL:高級插入如果不存在
INSERT INTO 'user_settings'(user_id, setting, value)
VALUES (1234, setting_1, 500)
ON DUPLICATE KEY UPDATE user_id = 1234, setting = setting_1'
這在創建新設置時效果很好,並且不會生成重複記錄。問題出現在我想更改值時 - 在上一個查詢運行後無效:
INSERT INTO 'user_settings'(user_id, setting, value)
VALUES (1234, setting_1, 999)
ON DUPLICATE KEY UPDATE user_id = 1234, setting = setting_1'
沒有行受到影響。顯然我錯過了一些東西...
重要:我無法改變數據庫(新的主鍵或什麼)。
UPDATE:看來我對ON DUPLICATE KEY
的理解是錯誤的。但問題依然存在 - 完成這一任務最有效的方法是什麼?
在下面的評論中回答:「如果主鍵(或唯一鍵)是(user_id,setting),則使用:... ON DUPLICATE KEY UPDATE value = 999」。
什麼是主鍵? – Yahia
我想說你不應該在UPDATE部分分配'user_id',因爲這已經是導致他插入錯誤的關鍵。 –
主鍵未列出 - 表中有更多的列沒有真正相關。 –