防止MySQL資料庫中資料的重複插入問題

2021-08-20 18:37:20 字數 1080 閱讀 5075

我們這裡是做了乙個資料的接入問題,需要不停的向資料庫中寫入資料,那這些資料中有的是重複的,重複的資料寫入資料庫既沒有意義,也浪費記憶體空間,所以我們需要想乙個辦法來解決資料重複插入的問題。

現在我自己模擬三條資料來做乙個資料的寫入,正常的insert語句sql為insert into tb_user (username,ped,edit_time) values("小明",1,2018....),..

這裡有三個解決方法:

1、利用ignore

關鍵字方法原理:忽略了有唯一索引欄位的相同資料,只新增不同的資料,成功的操作條數是新增的真實條數,若沒有ignore關鍵字會報錯

sql為:insert ignore into tb_user (username,ped,edit_time) values("小明",1,2018....),..;

說明:但使用次方法就必須表中有某個欄位是具有唯一性或約束性的,如果你的字段沒有的話,執行完該語句和普通的insert語句結果沒有區別

現在是新增唯一索引

的方法:alter table `t_user` add unique(`edit_time`); 我這裡是給edit_time新增了唯一索引,大家可以按照自己的表結構來選取唯一索引的新增。

2、利用

replace

關鍵字方法原理:將相同的字段資料直接先刪掉,再重新新增,,成功之後顯示操作條數的是刪除的條數加上新新增的條數

sql為:replace into 

tb_user (username,ped,edit_time) values("小明",1,2018....),..;

說明:該方法與方法一類似,再沒有唯一約束性時與普通的insert沒有區別

3、on duplicate key update

語句說明:你也可以在insert into…..後面加上 on duplicate key update方法來實現。如果您指定了on duplicate key update,並且插入行後會導致在乙個unique索引或primary key中出現重複值,則執行舊行update。

mysql資料庫中的 MySQL資料庫中定義

定義資料表 假如某個電腦生產商,它的資料庫中儲存著整機和配件的產品資訊。用來儲存整機產品資訊的表叫做pc 用來儲存配件供貨資訊的表叫做parts。在pc表中有乙個字段,用來描述這款電腦所使用的cpu型號 在parts表中相應有乙個字段,描述的正是cpu的型號,我們可以把它想成是全部cpu的型號列表。...

mysql資料庫中的方法 mysql資料庫基本方法

啟動 net start mysql 進入 mysql u root p mysql h localhost u root p databasename 列出資料庫 show databases 選擇資料庫 use databasename 列出 show tables 顯示 列的屬性 show c...

mysql資料庫鎖 MySQL 資料庫中的那些鎖

全域性鎖全域性鎖是粒度最大的鎖,基本上也使用不上,就像我們家的大門一樣,控制著整個資料庫例項。全域性鎖就是對整個資料庫例項加鎖,讓整個資料庫處於唯讀狀態。mysql 提供了乙個加全域性讀鎖的方法,命令是 flush tables with read lock ftwrl 加鎖之後整個資料庫例項處於唯...