通常我們需要避免資料庫重複插入操作的時候會給表設定主鍵或唯一索引,當插入重複資料的時候丟擲異常,程式終止,但是這樣也會存在一定的麻煩,所以就需要我們能盡量的避開或忽略異常。為了演示,我們新建乙個user測試表,包括欄位id、username、***、addr四個字段,其中主鍵為id(自增),同時對username欄位設定唯一索引。
即插入資料時,如果資料存在,則忽略此次插入,前提條件是插入的資料字段設定了主鍵或唯一索引
insert
ignore
into
user
(username,***,addr)
values
('lisi'
,'man'
,'dongbei'
);
即插入資料時,如果資料存在,則執行更新操作,前提條件是插入的資料字段設定了主鍵或唯一索引
insert
into
user
(username,***,addr)
values
('lisi'
,'man'
,'dongbei')on
duplicate
keyupdate *** =
'man'
,addr=
'dongbei'
;
即插入資料時,如果資料存在則刪除在插入,前提條件是插入的資料字段設定了主鍵或唯一索引
replace
into
user
(username,***,addr)
values
('lisi'
,'man'
,'dongbei'
)
即insert into …select…where not exist…;這種方式適合沒有設定主鍵或唯一索引的資料,當插入一條記錄時首先判斷是否存在這樣一條記錄,不存在插入,存在忽略操作
insert
into
user
(username,***,addr)
select
'lisi'
,'man'
,'dongbei'
from
user
where
notexists
(select username from
user
where username =
'lisi'
)
mysql資料庫中避免重複資料插入
首先 資料庫中已經存在重複資料 並且資料量很大 之前並沒有設定重複欄位為唯一索引 需求 修改sql語句在插入時 避免重複插入 網上看了幾個部落格都是設定唯一索引 使用ignore或者replace into 或者on duplicate key update 如果資料存在會觸發更新操作 執行後面語句...
如何避免資料庫被黑
事情的起因從資料庫被黑開始 先前租了一台伺服器,裡面部署了mysql服務,當時密碼隨便設定了下 過了段時間上去一看,所有庫里都剩下一張waring表,長這樣 我還以為裡面會有勒索的資料,開啟一看啥資料都沒 這感覺就像乙個小偷闖入家中,一看這個家一貧如洗,啥都沒幹就走了 這些黑客真是可惡,還瞧不起人。...
資料庫併發插入避免重複資料的問題
今天稍微研究了下這個問題從網上整理資料大致得到了如下方案,先粗略記錄下,下班回去再更詳細記錄下。所有的方法都先不考慮效能問題,也不考慮業務,只看邏輯上能否達到去重,因為第一,如果唯一性是必須要保證的,那麼只能先實現了唯一,再去考慮優化 第二,如果能通過調整業務來規避,那我後面說的都是廢話了還有什麼看...