欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL批量插入唯一索引沖突的幾種避免辦法

 更新時(shí)間:2024年02月21日 10:47:18   作者:MinggeQingchun  
我們在進(jìn)行大批量的數(shù)據(jù)插入時(shí),遇到唯一索引沖突是經(jīng)常的事,本文主要介紹了MySQL批量插入唯一索引沖突的幾種避免辦法,具有一定的參考價(jià)值,感興趣的可以了解一下

我們在進(jìn)行大批量的數(shù)據(jù)插入時(shí),遇到唯一索引沖突是經(jīng)常的事,報(bào)錯(cuò)如下:

java.util.concurrent.ExecutionException: org.springframework.dao.DuplicateKeyException: 
### Error updating database.  Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '1122-zhangsan' for key 'idx_no_name'

在MySQL中有4種方法可以避免唯一索引沖突

(一)導(dǎo)入差異數(shù)據(jù),忽略重復(fù)數(shù)據(jù),IGNORE INTO的使用

(二)導(dǎo)入并覆蓋重復(fù)數(shù)據(jù),REPLACE INTO 的使用

(三)導(dǎo)入保留重復(fù)數(shù)據(jù)未指定字段,INSERT INTO ON DUPLICATE KEY UPDATE 的使用

表 test1

1、insert ignore into

INSERTIGNORE語句可以在插入數(shù)據(jù)時(shí)忽略唯一索引沖突的錯(cuò)誤,而不會中斷插入過程。

如果插入的數(shù)據(jù)存在唯一索引沖突,那么MySQL將忽略該行的插入操作,繼續(xù)插入下—行數(shù)據(jù)。

INSERT IGNORE INTO table_name (column1, column2, ...)
VALUES (valuel, value2, ...),...

2、replace into

REPLACE語句可以用于插入新行或替換已存在的行。

如果存在primary or unique相同的記錄,則先刪除掉。再插入新記錄

如果插入的數(shù)據(jù)存在唯一索引沖突,那么MySQL將刪除已存在的行,并插入新行。

這種方法就是不管原來有沒有相同的記錄,都會先刪除掉然后再插入。這意味著插入操作總是成功的,但可能導(dǎo)致數(shù)據(jù)丟失

REPLACE INTO table_name (columnl, column2, ...)
VALUES (valuel, value2, ...),...

3、on duplicate key update

當(dāng)primary或者unique重復(fù)時(shí),則執(zhí)行update語句,如update后為無用語句,

如id=id,則同1功能相同,但錯(cuò)誤不會被忽略掉。例如,為了實(shí)現(xiàn)name重復(fù)的數(shù)據(jù)插入不報(bào)錯(cuò),可使用一下語句:

INTO table_name (columnl, column2, ...)
VALUES (valuel, value2, ...),...
ON duplicate KEY UPDATE id = id

這種方法有個(gè)前提條件,就是,需要插入的約束,需要是主鍵或者唯一約束。

4、insert … select … where not exist

根據(jù)select的條件判斷是否插入,可以不光通過primary 和unique來判斷,也可通過其它條件。例如:

INSERT INTO books (name) SELECT 'MySQL Manual' 
FROM dual 
WHERE NOT EXISTS (SELECT id FROM books WHERE id = 1)

這種方法貌似寫這很繁瑣

INSERT INTO order (orderId ) VALUES
SELECT '500002' FROM DUAL WHERE NOT EXISTS (
SELECT * FROM order WHERE orderId='500002'
)

到此這篇關(guān)于MySQL批量插入唯一索引沖突的幾種避免辦法的文章就介紹到這了,更多相關(guān)MySQL避免唯一索引沖突內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 細(xì)數(shù)MySQL中SQL語句的分類

    細(xì)數(shù)MySQL中SQL語句的分類

    下面小編就為大家?guī)硪黄?xì)數(shù)MySQL中SQL語句的分類。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-11-11
  • MySQL數(shù)據(jù)庫中的TRUNCATE?TABLE命令詳解

    MySQL數(shù)據(jù)庫中的TRUNCATE?TABLE命令詳解

    這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫中TRUNCATE?TABLE命令的相關(guān)資料,Truncate Table“清空表”的意思,它對數(shù)據(jù)庫中的表進(jìn)行清空操作,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • MySQL忘記root密碼以及遠(yuǎn)程無法連接的解決方法

    MySQL忘記root密碼以及遠(yuǎn)程無法連接的解決方法

    這篇文章主要介紹了MySQL忘記root密碼以及遠(yuǎn)程無法連接問題的解決方法,文中有詳細(xì)的代碼示例來解決這些辦法,需要的朋友可以參考下
    2023-06-06
  • 深入分析mysql為什么不推薦使用uuid或者雪花id作為主鍵

    深入分析mysql為什么不推薦使用uuid或者雪花id作為主鍵

    這篇文章主要介紹了深入分析mysql為什么不推薦使用uuid或者雪花id作為主鍵,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • MySQL server has gone away錯(cuò)誤提示解決方法

    MySQL server has gone away錯(cuò)誤提示解決方法

    今天遇到類似的情景,MySQL只是冷冷的說:MySQL server has gone away。
    2008-11-11
  • Mysql給普通分頁查詢結(jié)果加序號實(shí)操

    Mysql給普通分頁查詢結(jié)果加序號實(shí)操

    這篇文章主要介紹了Mysql給普通分頁查詢結(jié)果加序號實(shí)操,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • MySQL運(yùn)維實(shí)戰(zhàn)使用RPM進(jìn)行安裝部署

    MySQL運(yùn)維實(shí)戰(zhàn)使用RPM進(jìn)行安裝部署

    這篇文章主要為大家介紹了MySQL運(yùn)維實(shí)戰(zhàn)使用RPM進(jìn)行安裝部署實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 詳解mysql觸發(fā)器trigger實(shí)例

    詳解mysql觸發(fā)器trigger實(shí)例

    這篇文章主要為大家介紹了mysql觸發(fā)器trigger實(shí)例?,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • MySQL MHA 運(yùn)行狀態(tài)監(jiān)控介紹

    MySQL MHA 運(yùn)行狀態(tài)監(jiān)控介紹

    這篇文章主要介紹MySQL MHA 運(yùn)行狀態(tài)監(jiān)控,MHA(Master HA)是一款開源的 MySQL 的高可用程序,它為 MySQL 主從復(fù)制架構(gòu)提供了 automating master failover 功能,想具體了解的小伙伴可以和小編一起學(xué)習(xí)下面文章內(nèi)容
    2021-10-10
  • MySQL基礎(chǔ)入門之Case語句用法實(shí)例

    MySQL基礎(chǔ)入門之Case語句用法實(shí)例

    case語句是mysql中的一個(gè)條件語句,可以在字段中使用case語句進(jìn)行復(fù)雜的篩選以及構(gòu)造新的字段,下面這篇文章主要給大家介紹了關(guān)于MySQL基礎(chǔ)入門之Case語句用法的相關(guān)資料,需要的朋友可以參考下
    2022-08-08

最新評論