没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
2页
当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 int
资源详情
资源评论
资源推荐
Mysql中中 unique列插入重复值该怎么解决呢列插入重复值该怎么解决呢
当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)
weixin_38724154
- 粉丝: 7
- 资源: 895
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 课程设计-python爬虫-爬取日报,爬取日报文章后存储到本地,附带源代码+课程设计报告
- 软件和信息技术服务行业投资与前景预测.pptx
- 课程设计-基于SpringBoot + Mybatis+python爬虫NBA球员数据爬取可视化+源代码+文档+sql+效果图
- 软件品质管理系列二项目策划规范.doc
- 基于TensorFlow+PyQt+GUI的酒店评论情感分析,支持分析本地数据文件和网络爬取数据分析+源代码+文档说明+安装教程
- 软件定义无线电中的模拟电路测试技术.pptx
- 软件开发协议(作为技术开发合同附件).doc
- 软件开发和咨询行业技术趋势分析.pptx
- 软件测试题详解及答案.doc
- 软件漏洞生命周期管理策略.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0