暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL 插入insert时解决主键冲突

NIU技术那点事 2020-04-22
803

一、开始准备工作

新建USERS表及插入测试数据:

DROP TABLE IF EXISTS users;

CREATE TABLE users(

 id INT PRIMARY KEY,

 name VARCHAR(10),

 sal INT

) ENGINE = INNODB DEFAULT CHARSET = utf8;

INSERT INTO users VALUES (1,'xmith',2800);

INSERT INTO users VALUES (2,'pllen',1500);

INSERT INTO users VALUES (3,'wopd',3500);

INSERT INTO users VALUES (4,'zones',1300);

INSERT INTO users VALUES (5,'yhrtin',1600);

INSERT INTO users VALUES (6,'xlakn',3000);

 

select * from users;

结果如下图:

 

二、冲突解决方式

新建表及插入数据:

1) 主键冲突更新

INSERT [INTO] 数据表名 [(字段列表)] {VALUES | VALUE} (字段列表) ON DUPLICATE KEY UPDATE 字段名1 = 新值1[,字段名2 = 新值2] …;

INSERT INTO users(id,name,sal) VALUES (3,'wopd5',6000)ON DUPLICATE KEY UPDATE name = 'wopd5',sal = 6000;

select * from users;

结果如下图:

 

 

2) 主键冲突替换

REPLACE [INTO] 数据表名 [(字段列表)] {VALUES | VALUE} (值列表) [, (值列表)] …;

REPLACE INTO users(id,name,sal) VALUES (5,'yhrtin5',3600);

select * from users;

结果如下图:

 

无冲突时直接插入数据,插入后数据结果如下图:

REPLACE INTO users(id,name,sal) VALUES (7,'ruiop',3600);

 

三、差别

REPLACE语句与INSERT语句的使用相当,差别在于REPLACE语句每执行一次就会发生两个操作(删除记录和插入记录)。



关注我们,精彩属于你

文章转载自NIU技术那点事,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论