SQL Duplicate entry for key ‘PRIMARY‘主鍵重復(fù)報錯解決
錯誤原因
報錯信息“Duplicate entry '1234' for key 'USER_INFO.PRIMARY'”,嘗試插入一條數(shù)據(jù)時,主鍵值ID=1234,已經(jīng)存在于表USER_INFO中。因為鍵(Primary Key)是表中的唯一標(biāo)識符,每個記錄必須有一個唯一的主鍵值,所以報錯
例:
ID(主鍵) | USER_NAME | ADDRESS |
---|---|---|
1234 | 小紅 | 武漢 |
5678 | 小白 | 長沙 |
執(zhí)行如下插入sql后預(yù)期報錯
INSERT INTO USER_INFO (ID, USER_NAME, ADDRESS) VALUES (1234, '小紅', '武漢');
解決方案
1. INSERT IGNORE:忽略重復(fù)的插入操作,插入無效
機(jī)制:遇到主鍵沖突不進(jìn)行任何操作
示例預(yù)期:
INSERT IGNORE USER_INFO (ID, USER_NAME, ADDRESS) VALUES (1234, '小紅', '武漢');
ID(主鍵) | USER_NAME | ADDRESS |
---|---|---|
1234 | 小紅 | 武漢 |
5678 | 小白 | 長沙 |
2.REPLACE INTO:可以在主鍵沖突時替換現(xiàn)有記錄
機(jī)制:先嘗試插入數(shù)據(jù),如果發(fā)現(xiàn)主鍵沖突(或唯一索引沖突),則刪除沖突的現(xiàn)有行,然后插入新行
示例預(yù)期:
REPLACE INTO USER_INFO (ID, USER_NAME, ADDRESS) VALUES (1234, '小綠', '北京');
ID(主鍵) | USER_NAME | ADDRESS |
---|---|---|
1234 | 小綠 | 北京 |
5678 | 小白 | 長沙 |
3. ON DUPLICATE KEY UPDATE:可以在主鍵沖突時更新現(xiàn)有記錄
機(jī)制:先嘗試插入數(shù)據(jù),如果發(fā)現(xiàn)主鍵沖突(或唯一索引沖突),則執(zhí)行update 操作,而不是刪除和重新插入(設(shè)想場景:批量導(dǎo)入數(shù)據(jù),如果表格中已存在主鍵相同信息,則以表格中信息為準(zhǔn),然后更新表格中的一個標(biāo)識等)
INSERT INTO USER_INFO (ID, USER_NAME, ADDRESS) VALUES (1234, '小紅', '武漢')
ON DUPLICATE KEY UPDATE USER_NAME = '小綠'
示例預(yù)期:
ID(主鍵) | USER_NAME | ADDRESS |
---|---|---|
1234 | 小綠 | 武漢 |
5678 | 小白 | 長沙 |
4.避免重復(fù)插入、調(diào)整表結(jié)構(gòu)
到此這篇關(guān)于SQL Duplicate entry for key ‘PRIMARY‘主鍵重復(fù)報錯解決的文章就介紹到這了,更多相關(guān)SQL 主鍵重復(fù)報錯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
jdbc使用PreparedStatement批量插入數(shù)據(jù)的方法
這篇文章主要介紹了jdbc使用PreparedStatement批量插入數(shù)據(jù)的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04必須會的SQL語句(二) 創(chuàng)建表、修改表結(jié)構(gòu)、刪除表
這篇文章主要介紹了sqlserver中創(chuàng)建表、修改表結(jié)構(gòu)、刪除表的sql語句,需要的朋友可以參考下2015-01-01SQL中函數(shù) replace 的參數(shù)1的數(shù)據(jù)類型ntext無效的解決方法
SQL中函數(shù) replace 的參數(shù) 1 的數(shù)據(jù)類型 ntext 無效。找了半天找到了解決辦法2010-06-06SQL Server 存儲過程遇到“表 ''''#TT'''' 沒有標(biāo)識屬性無法執(zhí)行 SET 操作”錯誤
這篇文章主要介紹了SQL Server 存儲過程遇到“表 '#TT' 沒有標(biāo)識屬性無法執(zhí)行 SET 操作”錯誤 的相關(guān)資料,需要的朋友可以參考下2016-07-07sql函數(shù)實現(xiàn)去除字符串中的相同的字符串
去除字符串中的相同的字符,此功能在開發(fā)過程中很實用,為此本文整理了一些,希望對你了解它有所幫助2013-01-01