插入或更新的任務資料庫中基於兩個條件的行可能具有挑戰性,特別是在尋求有效的解決方案時。在處理不斷產生具有重複名稱和日期的新行的表時,此問題尤其普遍。
這個問題的最佳解決方案是INSERT INTO ON DUPLICATE KEY UPDATE 陳述。該語句允許插入新行(如果尚不存在),並更新現有行(如果存在)。若要使用此語句,表必須具有唯一鍵(例如複合鍵)來偵測插入操作期間的衝突。
考慮一個具有以下模式的表:
CREATE TABLE myThing ( id INT AUTO_INCREMENT PRIMARY KEY, name INT NOT NULL, values1 INT NOT NULL, values2 INT NOT NULL, dates DATE NOT NULL, UNIQUE KEY (name, dates) -- This unique key is crucial. );
透過此設置,如果名稱和日期組合不存在,以下語句將插入新行,如果存在,則更新現有行:
INSERT INTO myThing (name, values1, values2, dates) VALUES (777, 1, 1, '2015-07-11') ON DUPLICATE KEY UPDATE values2=values2+1;
使用相同的名稱和日期組合多次執行插入語句將更新values2列,如圖所示如下:
| id | name | values1 | values2 | dates | | --- | --- | --- | --- | --- | | 1 | 777 | 1 | 4 | 2015-07-11 |
INSERT INTO ON DUPLICATE KEY UPDATE語句提供了一個高效的解決方案來管理插入和根據多種條件進行更新。透過定義唯一鍵,此方法可確保重複條目得到適當處理,從而無需複雜的預存程序。
以上是如何根據兩個條件有效率地插入或更新資料庫行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!