在MySQL中重複的插入資料不拋異常(效能待驗證)

2021-10-10 11:54:00 字數 1340 閱讀 6877

最常見的方式就是為字段設定主鍵或唯一索引,當插入重複資料時,丟擲錯誤,程式終止,但這會給後續處理帶來麻煩,因此需要對插入語句做特殊處理,盡量避開或忽略異常,下面我簡單介紹一下,感興趣的朋友可以嘗試一下:

這裡為了方便演示,我新建了乙個user測試表,主要有id,username,***,address這4個字段,其中主鍵為id(自增),同時對username欄位設定了唯一索引:

01 insert ignore into(這個可以使用下)

即插入資料時,如果資料存在,則忽略此次插入,前提條件是插入的資料字段設定了主鍵和唯一索引,測試sql語句如下,當插入本條資料時,mysql資料庫會首先檢索已有資料(也就是idx_username索引),如果存在,則忽略本次插入,如果不存在,則正常插入資料:

即插入資料時,如果資料存在,則執行更新操作,前提條件同上,也是插入的資料字段設定了主鍵和唯一索引,測試sql語句如下,當插入本條記錄時,mysql資料庫會首先檢索已有資料(idx_username索引),如果存在,則執行update更新操作,如果不存在,則直接插入:

即插入資料時,如果資料存在,則刪除再插入,前提條件同上,插入的資料字段需要設定主鍵和唯一索引,測試sql語句如下,當插入本條記錄時,mysql資料庫會首先檢索已有資料(idx_username索引),如果存在,則先刪除舊資料,然後再插入,如果不存在,則直接插入:

04 insert if not exists(不推薦使用,覺得會影響效能,待驗證一下)

即insert into … select … where not exist ... ,這種方式適合於插入的資料字段沒有設定主鍵和唯一索引,當插入一條資料時,首先判斷mysql資料庫中是否存在這條資料,如果不存在,則正常插入,如果存在,則忽略:

目前,就分享這4種mysql處理重複資料的方式吧,前3種方式適合字段設定了主鍵或唯一索引,最後一種方式則沒有此限制,只要你熟悉一下使用過程,很快就能掌握的。

MySQL不插入重覆記錄

想插入一條記錄,如果有則不插入,無則插入。表示由乙個自增長id主鍵和其他幾個記錄 t version id,package name,first,second,third,forth 原先想用insert ignore into,但是發現沒有用,因為它把id也看做不同。於是我找了網上的另外一種方法 ...

mysql 防止重複插入資料

mysql 防止重複插入資料 一 利用on duplicate key update語句 insert into mac netbar values ff 001001001000000 on duplicate key update mac addr ff netbar id 0010010010...

利用mysql的dual表達到不插入重覆記錄

insert into book chapter del book id,chapter id,status select 20049198 1000930,0 from dual where not exists select from book chapter del where book id...