Mysql中 unique列插入重复值该怎么解决呢


Posted in MySQL onMay 26, 2021

当unique列在一个UNIQUE键上插入包含重复值的记录时,我们可以控制MySQL如何处理这种情况:使用IGNORE关键字或者ON DUPLICATE KEY UPDATE子句跳过INSERT、中断操作或者更新旧记录为新值。

mysql> create table menus(id tinyint(4) not null auto_increment, 
  -> label varchar(10) null,url varchar(20) null,unique key(id)); 
Query OK, 0 rows affected (0.13 sec) 
mysql> insert into menus(label,url) values('Home','home.html'); 
Query OK, 1 row affected (0.06 sec) 
mysql> insert into menus(label,url) values('About us','aboutus.html'); 
Query OK, 1 row affected (0.05 sec) 
mysql> insert into menus(label,url) values('Services','services.html'); 
Query OK, 1 row affected (0.05 sec) 
mysql> insert into menus(label,url) values('Feedback','feedback.html'); 
Query OK, 1 row affected (0.05 sec) 
mysql> select * from menus; 
+----+----------+---------------+ 
| id | label  | url     | 
+----+----------+---------------+ 
| 1 | Home  | home.html  | 
| 2 | About us | aboutus.html | 
| 3 | Services | services.html | 
| 4 | Feedback | feedback.html | 
+----+----------+---------------+ 
4 rows in set (0.00 sec)

如果现在在unique列插入一条违背唯一约束的记录,MySQL会中断操作,提示出错:

mysql> insert into menus(id,label,url) values(4,'Contact us','contactus.html'); 
ERROR 1062 (23000): Duplicate entry '4' for key 'id'

在前面的INSERT语句添加IGNORE关键字时,如果认为语句违背了唯一约束,MySQL甚至不会尝试去执行这条语句,因此,下面的语句不会返回错误:

mysql> insert ignore into menus(id,label,url) values(4,'Contact us','contactus.html'); 
Query OK, 0 rows affected (0.00 sec) 
mysql> select * from menus; 
+----+----------+---------------+ 
| id | label  | url     | 
+----+----------+---------------+ 
| 1 | Home  | home.html  | 
| 2 | About us | aboutus.html | 
| 3 | Services | services.html | 
| 4 | Feedback | feedback.html | 
+----+----------+---------------+ 
4 rows in set (0.00 sec)

当有很多的INSERT语句需要被顺序地执行时,IGNORE关键字就使操作变得很方便。使用它可以保证不管哪一个INSERT包含了重复的键值,MySQL都回跳过它(而不是放弃全部操作)。

在这种情况下,我们还可以通过添加MySQL4.1新增加的ON DUPLICATE KEY UPDATE子句,使MySQL自动把INSERT操作转换为UPDATE操作。这个子句必须具有需要更新的字段列表,这个列表和UPDATE语句使用的列表相同。

mysql> insert into menus(id,label,url) values(4,'Contact us','contactus.html') 
  -> on duplicate key update label='Contact us',url='contactus.html'; 
Query OK, 2 rows affected (0.05 sec)

在这种情况下,如果MySQL发现表已经包含具有相同唯一键的记录,它会自动更新旧的记录为ON DUPLICATE KEY UPDATE从句中指定的新值:

mysql> select * from menus; 
+----+------------+----------------+ 
| id | label   | url      | 
+----+------------+----------------+ 
| 1 | Home   | home.html   | 
| 2 | About us | aboutus.html | 
| 3 | Services | services.html | 
| 4 | Contact us | contactus.html | 
+----+------------+----------------+ 
4 rows in set (0.01 sec)

以上内容是小编给大家介绍的Mysql中 unique列插入重复值该怎么解决的全部教程,希望对大家有所帮助。

MySQL 相关文章推荐
浅析InnoDB索引结构
Apr 05 MySQL
多属性、多分类MySQL模式设计
Apr 05 MySQL
MySQL主从搭建(多主一从)的实现思路与步骤
May 13 MySQL
mysql函数全面总结
Nov 11 MySQL
MySQL创建管理HASH分区
Apr 13 MySQL
MySQL创建管理KEY分区
Apr 13 MySQL
MySQL数据库事务的四大特性
Apr 20 MySQL
优化Mysql查询的示例
Apr 26 MySQL
MySQL数据库安装方法与图形化管理工具介绍
May 30 MySQL
MySQL示例讲解数据库约束以及表的设计
Jun 16 MySQL
MySQL分布式恢复进阶
Jul 23 MySQL
MySQL count(*)统计总数问题汇总
Sep 23 MySQL
MySQL查看表和清空表的常用命令总结
May 26 #MySQL
MySQL中distinct与group by之间的性能进行比较
MySQL中distinct和count(*)的使用方法比较
May 26 #MySQL
MySQL中出现乱码问题的终极解决宝典
如何设计高效合理的MySQL查询语句
May 26 #MySQL
虚拟机linux端mysql数据库无法远程访问的解决办法
May 26 #MySQL
正确使用MySQL INSERT INTO语句
May 26 #MySQL
You might like
smarty模板中拼接字符串的方法
2014/02/14 PHP
PHP中的一些常用函数收集
2015/05/26 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
php有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
Symfony2针对输入时间进行查询的方法分析
2017/06/28 PHP
JavaScript Array扩展实现代码
2009/10/14 Javascript
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
Jquery下EasyUI组件中的DataGrid结果集清空方法
2014/01/06 Javascript
jquery操作select详解(取值,设置选中)
2014/02/07 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
实例详解angularjs和ajax的结合使用
2015/10/22 Javascript
对js eval()函数的一些见解
2016/08/15 Javascript
PHP实现本地图片上传和验证功能
2017/02/27 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
关于Vue源码vm.$watch()内部原理详解
2019/04/26 Javascript
vue和better-scroll实现列表左右联动效果详解
2019/04/29 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
Python迭代用法实例教程
2014/09/08 Python
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
python脚本替换指定行实现步骤
2017/07/11 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
Python 中如何写注释
2020/08/28 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
物流仓储计划书
2014/01/10 职场文书
一月红领巾广播稿
2014/02/11 职场文书
2014年巴西世界杯口号
2014/06/05 职场文书
销售经理助理岗位职责
2015/04/13 职场文书
2015年度招聘工作总结
2015/05/28 职场文书
Python函数中的不定长参数相关知识总结
2021/06/24 Python
CPU不支持Windows11系统怎么办
2021/11/21 数码科技
微信小程序调用python模型
2022/04/21 Python