【mysql】mysql插入數據存在更新,不存在插入

1.REPLACE

       刪除更新:要求存在唯一索引,主鍵等唯一標識,流程是先刪除再插入,所以永遠可以保證最新。使用REPLACE的最大好處就是可以將DELETE和INSERT合二爲一,形成一個原子操作。如果行作爲新記錄被insert,則受影響行的值爲1;如果原有的記錄被更新,則受影響行的值爲2。

-- 刪除更新
REPLACE INTO golf_game_plan ( create_time, modify_time, user_id, plan_date )
VALUES
	( now( ), now( ), 11363, '2019-09-13 00:00:00' );
	
	

2.ON DUPLICATE KEY UPDATE

       要求存在唯一索引,主鍵等唯一標識,根據表中唯一索引判斷,如下所示user_id字段就添加了唯一索引。如果行作爲新記錄被insert,則受影響行的值爲1;如果原有的記錄被更新,則受影響行的值爲2。

-- 唯一索引更新
INSERT INTO golf_game_plan ( create_time, modify_time, user_id, plan_date )
VALUES
	( now( ), now( ), 11363, '2019-09-13 00:00:00' ) 
	ON DUPLICATE KEY UPDATE plan_date = '2019-12-22 00:00:00', modify_time = now();
	

 3.EXISTS

        通過exists語法更新,判斷是否存在記錄,來決定插入或刪除

INSERT INTO golf_game_plan ( create_time, modify_time, user_id, plan_date ) SELECT
now( ), now( ), 11369, '2019-09-13 00:00:00'
FROM
DUAL 
WHERE
	NOT EXISTS ( SELECT * FROM golf_game_plan WHERE id = 37 );
	

 4.IGNORE

        要求存在唯一索引,主鍵等唯一標識。流程是先刪除再插入。

INSERT IGNORE INTO golf_game_plan ( create_time, modify_time, user_id, plan_date )
VALUES
	( now( ), now( ), 11369, '2019-09-13 00:00:00' );

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章