mysql unique 重复_Mysql中 unique列插入重复值该怎么解决呢
当unique列在一个UNIQUE键上插入包含重复值的记录时,我们可以控制MySQL如何处理这种情况:使用IGNORE关键字或者ON DUPLICATE KEY UPDATE子句跳过INSERT、中断操作或者更新旧记录为新值。
?mysql>create table menus(id tinyint(4)not null auto_increment,-> labelvarchar(10)null,urlvarchar(20)null,unique key(id));Query OK, 0rows 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 |+----+----------+---------------+4rows in set (0.00 sec)
如果现在在unique列插入一条违背唯一约束的记录,MySQL会中断操作,提示出错:
?12mysql>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, 0rows 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 |+----+----------+---------------+4rows 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 duplicatekey update label='Contact us',url='contactus.html';Query OK, 2rows 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 |+----+------------+----------------+4rows in set (0.01 sec)
以上内容是小编给大家介绍的Mysql中 unique列插入重复值该怎么解决的全部教程,希望对大家有所帮助。
mysql unique 重复_Mysql中 unique列插入重复值该怎么解决呢相关推荐
- MySQL里 unique 用法_mysql中unique key中在查询中的使用
1.建表语句: sql">CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,`birth_date` date NOT NULL ...
- mysql primary重复_mysql中primary key重复时的处理办法
mysql中primary key重复时的处理办法 文章作者:网友投稿 发布时间:2010-03-14 22:25:52 来源:网络 当insert进数据表, 发生唯一key(unique key与p ...
- mysql 命名 冲突_MySQL中字段名和保留字冲突的解决办法
我们知道通常的SQL查询语句是这么写的: 复制代码 代码如下:select col from table; 这当然没问题,但如果字段名是"from"呢? 复制代码 代码如下:sel ...
- mysql numeric 空值_mysql数据库不能添加NULL值,该怎么解决 - numeric
...持许多种不同的数值型数据.你可以存储整数 INT .小数 NUMERIC.和钱数 MONEY.INT VS SMALLINT VS TINYINT 他们的区别只是字符长度: INT型数据的表数范 ...
- ajax拿table里的th值,Jquery Ajax 异步设置Table中某列的值
可根据table中某列中的ID去改变某列的值! 只是参考,实际应用中不能这样做的,如果有很多行,频繁访问服务器,服务器是顶不住的! JS: $(document).ready(function () ...
- python的pandas库中如何计算每列出现最多的值_Python Pandas中根据列的值选取多行数据...
Pandas中根据列的值选取多行数据 # 选取等于某些值的行记录 用 == df.loc[df['column_name'] == some_value] # 选取某列是否是某一类型的数值 用 isi ...
- GridView控件RowDataBound事件中获取列字段值的几种途径
前台: <asp:TemplateField HeaderText="充值总额|账号余额"><ItemTemplate><asp:Label ID=& ...
- python选取列中数据的范围_Python Pandas中根据列的值选取多行数据
Pandas中根据列的值选取多行数据 # 选取等于某些值的行记录 用 == df.loc[df['column_name'] == some_value] # 选取某列是否是某一类型的数值 用 isi ...
- 给excel中添加列和值
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 给excel中添加列和值 执行前: 执行后: 提示:以下是本篇文章正文内容,下面案例可供参考 package com.yl;impor ...
最新文章
- teamcity plugin中读取js和css文件的方法
- Spline interpolation and Savitzki-Golay smoothing
- linux shell之cut用法
- iOS架构-静态库.a的脚本化打包及使用(3)
- 转 使用DCloud+Framework7制作移动APP应用
- 操作系统:第一章 计算机系统概述
- html5 ios cookie,ios – WKWebView,获取所有cookie
- Linux系统编程(七)消息队列
- java oralce merge_Oracle数据库merge into的使用,存在则更新,不存在则插入
- python从小到大的顺序输出_「小白专栏」Python中使用for循环,为什么输出结果不是按顺序?...
- 让我们拭目以待的5z20
- linux+vi+注掉代码,VI编辑器之删除操作(示例代码)
- 程序批量将文本文件中的某字符替换
- PHP时间戳和日期转换
- javascript设置网页快捷键
- 阿里云 CentOS7.9 搭建 Hexo 个人博客教程
- 世界通用闹铃(闹钟铃声)铃声 世界通用闹铃(闹钟铃声)手机铃声...
- Echarts 雷达简单应用
- java代码实现身份证第18位的计算和验证身份证号码是否是真实有效.
- OS模块--批量修改文件名字(一)创建和修改文件路径
热门文章
- 嬴彻科技完成2.7亿美元融资 京东物流、美团、太盟投资集团联合领投
- mediawiki 简易的使用教程
- 关于数据存储的三道面试题,你会吗?
- 七夕节有病毒入侵 慎对QQ好友送玫瑰(转)
- C++vector容器使用sort排序(含升序以及降序)
- (8)C#导入库编译出错:请考虑使用 app.config 将程序集“log4net, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a”
- 微信多图上传,解决android多图上传失败问题
- Developing Large Web Applications
- 【示波器专题】数字示波器的主要指标——采样率
- 为什么“前Google工程师”会“感觉UML没啥用”?