国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

MySQL 處理插入過程中的主鍵唯一鍵重復(fù)值的解決方法

2024-07-24 13:09:04
字體:
供稿:網(wǎng)友

本篇文章主要介紹在插入數(shù)據(jù)到表中遇到鍵重復(fù)避免插入重復(fù)值的處理方法,主要涉及到IGNORE,ON DUPLICATE KEY UPDATE,REPLACE;接下來就分別看看這三種方式的處理辦法。

IGNORE

使用ignore當(dāng)插入的值遇到主鍵(PRIMARY KEY)或者唯一鍵(UNIQUE KEY)重復(fù)時(shí)自動(dòng)忽略重復(fù)的記錄行,不影響后面的記錄行的插入,

創(chuàng)建測(cè)試表

CREATE TABLE Tignore(ID INT NOT NULL PRIMARY KEY ,NAME1 INT)default charset=utf8; 

MySQL,主鍵

正常的插入如果插入的記錄中存在鍵重復(fù)會(huì)報(bào)錯(cuò),整個(gè)語(yǔ)句都會(huì)執(zhí)行失敗

MySQL,主鍵

使用IGNORE如果插入的記錄中存在重復(fù)值會(huì)忽略重復(fù)值的該記錄行,不影響其它行的插入。

REPLACE

使用replace當(dāng)插入的記錄遇到主鍵或者唯一鍵重復(fù)時(shí)先刪除表中重復(fù)的記錄行再插入。

REPLACE INTO Treplace() VALUES(1,1),(1,2),(2,2); 

創(chuàng)建測(cè)試表

DROP TABLE IF EXISTS Treplace;CREATE TABLE Treplace(ID INT NOT NULL PRIMARY KEY ,NAME1 INT)default charset=utf8; 

MySQL,主鍵

從輸出的信息可以看到是4行受影響,說明它是先插入了(1,1)然后又刪除了(1,1)
 

ON DUPLICATE KEY UPDATE

當(dāng)插入的記錄遇到主鍵或者唯一鍵重復(fù)時(shí),會(huì)執(zhí)行后面定義的UPDATE操作。

相當(dāng)于先執(zhí)行Insert 操作,再根據(jù)主鍵或者唯一鍵執(zhí)行update操作。

創(chuàng)建測(cè)試表

DROP TABLE IF EXISTS Tupdate;CREATE TABLE Tupdate(ID INT NOT NULL PRIMARY KEY ,NAME1 INT UNIQUE KEY)default charset=utf8; INSERT INTO Tupdate() VALUES(1,1),(1,2) ON DUPLICATE KEY UPDATE NAME1=NAME1+1;INSERT INTO Tupdate() VALUES(1,1),(1,2) ON DUPLICATE KEY UPDATE NAME1=VALUES(NAME1)+1; 

第一條語(yǔ)句相當(dāng)于執(zhí)行:

INSERT INTO Tupdate() VALUES(1,1)UPDATE TupdateSET NAME1=NAME1+1WHERE ID=1; 

第二條語(yǔ)句相當(dāng)于執(zhí)行:

INSERT INTO Tupdate() VALUES(1,1)UPDATE TupdateSET NAME1=2+1WHERE ID=1; 

在ON DUPLICATE KEY UPDATE后面使用VALUES指的就是插入的記錄的值,而不使用VALUES指的是表的自身值。

MySQL,主鍵

注意: ON DUPLICATE KEY UPDATE的后面執(zhí)行的UPDATE更新的記錄是WHERE重復(fù)的主鍵或者唯一鍵的ID,這點(diǎn)非常重要。

比如下面這種情況:

INSERT INTO Tupdate() VALUES(1,1),(2,1) ON DUPLICATE KEY UPDATE NAME1=VALUES(ID)+1; 

它是唯一鍵NAME1重復(fù)但是主鍵不重復(fù),執(zhí)行的語(yǔ)句是這樣的:

INSERT INTO Tupdate() VALUES(1,1)UPDATE TupdateSET NAME1=2+1WHERE ID=1; 

MySQL,主鍵

不要認(rèn)為會(huì)插入主鍵ID=2的記錄進(jìn)去。

總結(jié)

上面的三種處理重復(fù)值的方法都支持標(biāo)準(zhǔn)的INSERT語(yǔ)法,包括INSERT INTO...VALUES, INSERT INTO ....SET ,INSERT INTO..... SELECT。

關(guān)于MySQL 處理插入過程中的主鍵唯一鍵重復(fù)值的解決方法小編就給大家介紹這么多,希望對(duì)大家有所幫助!


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到MYSQL教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 万年县| 高邮市| 大新县| 美姑县| 淳安县| 洞口县| 汉源县| 永春县| 宝鸡市| 克什克腾旗| 靖宇县| 茌平县| 凤城市| 黄骅市| 莱芜市| 乳山市| 来凤县| 黔江区| 忻城县| 上思县| 犍为县| 绵竹市| 汉寿县| 蓬莱市| 巴马| 榆中县| 砚山县| 福州市| 崇文区| 克拉玛依市| 迭部县| 裕民县| 微山县| 浦江县| 遂平县| 南乐县| 长阳| 双江| 长岛县| 江达县| 崇义县|