当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列插入重复值该怎么解决呢相关推荐

  1. MySQL里 unique 用法_mysql中unique key中在查询中的使用

    1.建表语句: sql">CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,`birth_date` date NOT NULL ...

  2. mysql primary重复_mysql中primary key重复时的处理办法

    mysql中primary key重复时的处理办法 文章作者:网友投稿 发布时间:2010-03-14 22:25:52 来源:网络 当insert进数据表, 发生唯一key(unique key与p ...

  3. mysql 命名 冲突_MySQL中字段名和保留字冲突的解决办法

    我们知道通常的SQL查询语句是这么写的: 复制代码 代码如下:select col from table; 这当然没问题,但如果字段名是"from"呢? 复制代码 代码如下:sel ...

  4. mysql numeric 空值_mysql数据库不能添加NULL值,该怎么解决 - numeric

    ...持许多种不同的数值型数据.你可以存储整数 INT .小数 NUMERIC.和钱数 MONEY.INT VS SMALLINT VS TINYINT 他们的区别只是字符长度: INT型数据的表数范 ...

  5. ajax拿table里的th值,Jquery Ajax 异步设置Table中某列的值

    可根据table中某列中的ID去改变某列的值! 只是参考,实际应用中不能这样做的,如果有很多行,频繁访问服务器,服务器是顶不住的! JS: $(document).ready(function () ...

  6. python的pandas库中如何计算每列出现最多的值_Python Pandas中根据列的值选取多行数据...

    Pandas中根据列的值选取多行数据 # 选取等于某些值的行记录 用 == df.loc[df['column_name'] == some_value] # 选取某列是否是某一类型的数值 用 isi ...

  7. GridView控件RowDataBound事件中获取列字段值的几种途径

    前台: <asp:TemplateField HeaderText="充值总额|账号余额"><ItemTemplate><asp:Label ID=& ...

  8. python选取列中数据的范围_Python Pandas中根据列的值选取多行数据

    Pandas中根据列的值选取多行数据 # 选取等于某些值的行记录 用 == df.loc[df['column_name'] == some_value] # 选取某列是否是某一类型的数值 用 isi ...

  9. 给excel中添加列和值

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 给excel中添加列和值 执行前: 执行后: 提示:以下是本篇文章正文内容,下面案例可供参考 package com.yl;impor ...

最新文章

  1. teamcity plugin中读取js和css文件的方法
  2. Spline interpolation and Savitzki-Golay smoothing
  3. linux shell之cut用法
  4. iOS架构-静态库.a的脚本化打包及使用(3)
  5. 转 使用DCloud+Framework7制作移动APP应用
  6. 操作系统:第一章 计算机系统概述
  7. html5 ios cookie,ios – WKWebView,获取所有cookie
  8. Linux系统编程(七)消息队列
  9. java oralce merge_Oracle数据库merge into的使用,存在则更新,不存在则插入
  10. python从小到大的顺序输出_「小白专栏」Python中使用for循环,为什么输出结果不是按顺序?...
  11. 让我们拭目以待的5z20
  12. linux+vi+注掉代码,VI编辑器之删除操作(示例代码)
  13. 程序批量将文本文件中的某字符替换
  14. PHP时间戳和日期转换
  15. javascript设置网页快捷键
  16. 阿里云 CentOS7.9 搭建 Hexo 个人博客教程
  17. 世界通用闹铃(闹钟铃声)铃声 世界通用闹铃(闹钟铃声)手机铃声...
  18. Echarts 雷达简单应用
  19. java代码实现身份证第18位的计算和验证身份证号码是否是真实有效.
  20. OS模块--批量修改文件名字(一)创建和修改文件路径

热门文章

  1. 嬴彻科技完成2.7亿美元融资 京东物流、美团、太盟投资集团联合领投
  2. mediawiki 简易的使用教程
  3. 关于数据存储的三道面试题,你会吗?
  4. 七夕节有病毒入侵 慎对QQ好友送玫瑰(转)
  5. C++vector容器使用sort排序(含升序以及降序)
  6. (8)C#导入库编译出错:请考虑使用 app.config 将程序集“log4net, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a”
  7. 微信多图上传,解决android多图上传失败问题
  8. Developing Large Web Applications
  9. 【示波器专题】数字示波器的主要指标——采样率
  10. 为什么“前Google工程师”会“感觉UML没啥用”?