mysql防止插入重複數據

我們對mysql插入數據分爲兩種情況:
一、以主鍵爲區別字段,主鍵不能重複
方案一:

insert ignore into table_name(email,phone,user_id) values('[email protected]','99999','9999')

其中table_name爲數據庫名稱;
email,phone,user_id爲字段名;
[email protected]’,‘99999’,'9999’爲屬性值;

方案二:
REPLACE的運行與INSERT很相像,但是如果舊記錄與新記錄有相同的值,則在新記錄被插入之前,舊記錄被刪除,即:
嘗試把新行插入到表中
當因爲對於主鍵或唯一關鍵字出現重複關鍵字錯誤而造成插入失敗時:
從表中刪除含有重複關鍵字值的衝突行
再次嘗試把新行插入到表中
舊記錄與新記錄有相同的值的判斷標準就是:表有一個PRIMARY KEY或UNIQUE索引,否則,使用一個REPLACE語句沒有意義。該語句會與INSERT相同,因爲沒有索引被用於確定是否新行復制了其它的行。
返回值:
REPLACE語句會返回一個數,來指示受影響的行的數目。該數是被刪除和被插入的行數的和。
受影響的行數可以容易地確定是否REPLACE只添加了一行,或者是否REPLACE也替換了其它行:檢查該數是否爲1(添加)或更大(替換)。

replace  into table_name(email,phone,user_id) values('test569','99999','123')

其中table_name爲數據庫名稱
(email,phone,user_id)爲字段名
(‘test569’,‘99999’,‘123’)爲屬性值
email爲主鍵

二、除主鍵外,其他字段屬性值也要求不同

insert into datas(content) select 'fox' from DUAL where not EXISTS(select content from datas where content='fox')

其中datas爲數據庫名稱
content爲字段名
fox爲屬性值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章