應用場景:有時候在做一些系統設置功能的時候,系統在第一次使用,或者初始化的時候,該設置信息並沒有存在於數據庫中,或者該系統設置信息永遠只保存一條,沒有必要為增加和修改這條信息而分別編寫insert和update語句,只需要用sql中的duplicate就能把問題解決。
假設有一個系統設置表如下
CREATE TABLE system_setings(
id BIGINT(20),
email INT,
message INT,
PRIMARY KEY (`id`)
)
|
當表創建時,就像剛才說的情況那樣,數據庫沒有任何系統設置的記錄,維護這個表只需要如下語句,就能夠完成記錄的新增和修改,是不是很方便。
INSERT INTO `system_setings`
(
unit_id,email,message
)
VALUE (3,0,1)
ON DUPLICATE KEY UPDATE
email=VALUES(email),
message=VALUES(message)
|
關鍵點:duplicate是根據唯一主鍵來判斷當前記錄是否存在,因此數據表必須有標識數據唯一性的主鍵,本例中的主鍵是id,實際運用中也可以使用聯合主鍵
