MySQL:插入数据insert ignore,重复数据自动忽略
短信预约 -IT技能 免费直播动态提醒
MySQL中插入数据,如果插入的数据在表中已经存在(主键或者唯一键已存在),使用insert ignore 语法可以忽略插入重复的数据。
insert ignore 语法
insert ignore into table_name values…
使用insert ignore语法插入数据时,如果发生主键或者唯一键冲突,则忽略这条插入的数据。
满足以下条件之一:
主键重复
唯一键重复
2、insert ignore 案例
先看一张表,表名table_name,主键id,唯一键name,具体表结构及表中数据如下:
CREATE TABLE table_name( id int(11) NOT NULL, name varchar(50) DEFAULT NULL, age int(11) DEFAULT NULL, PRIMARY KEY (id), UNIQUE KEY uk_name (name)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql> select * from table_name;+----+------+------+| id | name | age |+----+------+------+| 1 | Tom | 20 |+----+------+------+
1 主键冲突
插入一条记录,id为1,如果不加 ignore ,报主键冲突的错误,如下:
mysql> insert into table_name values(1,’Bill’, 21);ERROR 1062 (23000): Duplicate entry ‘1’ for key ‘PRIMARY’
加上ignore之后,不会报错,但有一个warning警告,如下:
mysql> insert ignore into table_name values(1,’Bill’, 21);Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> show warnings;+———+——+—————————————+| Level | Code | Message |+———+——+—————————————+| Warning | 1062 | Duplicate entry ‘1’ for key ‘PRIMARY’ |+———+——+—————————————+
查询表,发现插入的数据被忽略了。
mysql> select * from table_name;+—-+——+——+| id | name | age |+—-+——+——+| 1 | Tom | 20 |+—-+——+——+
2 唯一键冲突
同样,插入唯一键冲突的数据也会忽略,如下所示:
mysql> insert into table_name values(2,’Tom’,21);ERROR 1062 (23000): Duplicate entry ‘Tom’ for key ‘uk_name’mysql> insert ignore into table_name values(2,’Tom’,21);Query OK, 0 rows affected, 1 warning (0.00 sec)
如果业务逻辑需要插入重复数据时自动忽略,不妨试试MySQL 的 insert ignore 功能。
来源地址:https://blog.csdn.net/qq_41848006/article/details/128274196
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341