mysql CONFLICT 沖突


1.IGNORE 

當使用INSERT語句向表中添加一些行數據並且在處理期間發生錯誤時,INSERT語句將被中止,並返回錯誤消息。因此,可能不會向表中沒有插入任何行。
但是,如果使用INSERT INGORE語句,則會忽略導致錯誤的行,並將其余行插入到表中。

insert IGNORE into table(xxx,xxx) VALUES (xxx,xxx);

insert IGNORE into `test` (`id`,`name`,`times`,`add_time`)
VALUES
('1','woq','3','1529304418'),
('2','woa','4','1529304452'),
('3','woz','5','1529304425'),
('4','wow','6','1529304445');

2.REPLACE INTO

如果發現表中已經有此行數據(根據主鍵或者唯一索引判斷)則先刪除此行數據,然后插入新的數據。
否則,直接插入新數據。
要注意的是:插入數據的表必須有主鍵或者是唯一索引!否則的話,replace into 會直接插入數據,這將導致表中出現重復的數據。 

REPLACE INTO table (xxx,xxx) VALUES (xxx,xxx);
REPLACE into `test` (`id`,`name`,`times`,`add_time`)
VALUES
('1','woq','3','1529304418'),
('2','woa','4','1529304452'),
('3','woz','5','1529304425'),

('4','wow','6','1529304445');

使用注意事項:

https://yq.aliyun.com/articles/57855

3.ON DUPLICATE KEY UPDATE 

ON DUPLICATE KEY UPDATE 語法並不是MySQL的標准語法,如果在句尾指定該語法,他會根據指定的主鍵或者唯一標示來更新數據庫的內容

具體的操作是想根據唯一標示查看數據庫是否存在該記錄,如果存在該記錄就更新,如果不存在就會插入一條新的記錄,

INSERT INTO TABLE (xxx,xxx) VALUES(xxx,xxx)  ON DUPLICATE key UPDATE `field_name`='xxx';
INSERT INTO test (`id`,`name`,`times`,`add_time`) VALUES ('1','kk','4','1531282881') ON DUPLICATE KEY UPDATE `add_time`='1531284238';


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM