MySQL唯一性插入資料的幾種實現實現

2021-10-03 20:37:34 字數 1534 閱讀 8250

在 mysql 中,插入(insert)一條記錄,經常需要檢查這條記錄是否已經存在,只有當記錄不存在時才執行插入操作。

mysql在存在主鍵衝突或者唯一鍵衝突的情況下,根據插入策略不同,一般有以下四種避免方法。

1、insert ignore

2、replace into

3、insert on duplicate key update

4、insert into if exists

注意,除非表有乙個primary key或unique索引,否則,使用以上四個語句沒有意義,與使用單純的insert into相同。

mysql的insert into if exists語句可以保證不重複插入,一般使用者批量匯入一些格式化好的資料。

insert into category(catname,cattype,cid,caturl,keywords) 

select '中國人', 2, 2031, 'china','中國人民' from dual 

where not exists

(select catname from category where catname = '中國人');

其中dual是臨時表,不需要物理建立,這麼用即可。

insert into table (field1, field2, fieldn) select

'field1',

'field2',

'fieldn'

from

dual

where

not exists (

select

field

from

table

where

field = ?

)

還有另外一種方法on duplicate key update,一般用於一張表的資料匯入到另一張表中。

insert into tb_count(uuid, click, liked, comment_count ) 

(select uuid, click, liked, comment_count from tb_content) 

on duplicate key update tb_count.uuid = tb_count.uuid;

有重複的唯一索引鍵就忽略。

insert ignore into table (name,email, phone) values ('abc','[email protected]', '123546');
replace和insert很相像,但是如果舊記錄與新記錄有相同的值,則在新記錄被插入之前,舊記錄被刪除,容易導致主鍵值迅速增大溢位。

replace into table (name,email, phone) values ('abc','[email protected]', '123546');

MySQL插入資料前檢測唯一性的一些語句用法總結

在寫程式的時候經常碰到在向資料庫中插入資料時,判斷資料是否已存在。諸如有存在的資料時跳過,不存在的資料繼續插入,要避免重複插入,又不想折騰兩回資料庫連線操作,這裡可能會用到以下語句,現小結一下。ignore是mysql相對於標準sql的擴充套件。如果在新錶中有重複關鍵字,此種方法效率比較高,判斷是否...

Mysql的唯一性索引unique

目錄 參考 唯一性索引表建立 drop table if exists sc create table sc id int 11 not null auto increment,name varchar 200 character set utf8 default null,class varcha...

程式的唯一性

試過各種方法,下面這個相對比較好 在program.cs中,新增如下,紅色字部分要改掉 usingsystem.diagnostics 新增 namespace programunique static class program 應用程式的主入口點。stathread static void ma...