如何使用更新子句中的現有資料和新資料執行UPSERTS
在資料庫管理領域,UPSERTS 在更新中發揮著至關重要的作用透過協調插入和更新操作來創建表。常見的情況是根據新傳入的值來增加表中的現有值。例如,如果我們維護一個庫存表,其中接收商品並追蹤其庫存,我們需要一種機制來處理新商品的插入和更新現有商品的庫存。
傳統上,人們使用以下方法解決此問題UPSERT 語句的 update 子句中的子查詢。該技術允許從正在更新的行中檢索現有值。但是,由於表中可能存在多個列,因此編寫多個 select 語句可能會變得很麻煩。
為了解決這個問題,有一個更簡單的方法,可以消除對子查詢的需要。透過 ON DUPLICATE KEY 參考觸發更新的行,您可以在更新子句中直接存取和操作其值。
考慮以下 UPSERT 語句:
INSERT INTO `item` (`item_name`, items_in_stock) VALUES( 'A', 27) ON DUPLICATE KEY UPDATE `new_items_count` = `new_items_count` + 27
在此範例中,new_items_count 欄位透過將其現有值增加到新值 27 來更新。
這種簡化的方法不僅增強了程式碼可讀性,而且還透過消除不必要的子查詢來提高效率。請記住,資料庫程式設計的關鍵通常是尋求簡單性和效率,而這個優雅的解決方案體現了兩者。
以上是如何透過對現有資料庫條目進行增量更新來有效執行 UPSERTS?的詳細內容。更多資訊請關注PHP中文網其他相關文章!