在使用資料庫時,經常需要處理具有相同唯一值的記錄可能需要被插入或更新。 MySQL 透過其 INSERT ... ON DUPLICATE KEY UPDATE 語法為這種情況提供了方便的解決方案。
考慮問題中所描述的情況。使用者想要將新資料插入 AggregateData 表中。但是,他們希望僅當表中尚不存在 datenum 欄位時才插入此資料。如果確實存在,他們希望使用新值更新時間戳欄位。
使用者使用的初始方法涉及UPDATE 語句:
UPDATE AggregatedData SET datenum="734152.979166667", Timestamp="2010-01-14 23:30:00.000" WHERE datenum="734152.979166667";
雖然此語句在以下情況下有效: datenum 值已存在,如果該值不存在於表中,則會失敗。為了有效地處理這種情況,INSERT ... ON DUPLICATE KEY UPDATE 發揮了作用。
此操作的正確語法是:
INSERT INTO AggregatedData (datenum, Timestamp) VALUES ("734152.979166667", "2010-01-14 23:30:00.000") ON DUPLICATE KEY UPDATE Timestamp=VALUES(Timestamp)
在此語句中:
使用此方法,使用者可以確保在 datenum 唯一時插入新數據,並且當日期數字重複時,現有數據將被更新。 datenum 欄位不需要包含在 UPDATE 子句中,因為它無法變更。
以上是MySQL 的 INSERT ... ON DUPLICATE KEY UPDATE 如何處理條件插入與更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!