当唯一列插入一个包含一个唯一键上的重复值的记录时,我们可以控制MySQL如何处理这种情况:我们使用忽略关键字或重复密钥更新子句跳过插入、中断操作或更新旧记录为新值。


MySQL >创建表菜单(ID字段(4)不为空auto_increment,
标签,varchar(10)零(20),URL varchar空,唯一键(ID));
查询OK,0行受影响(0.13秒)
MySQL >插入菜单(标签,URL)值('home',家乡。HTML);
查询OK,1行受影响(0.06秒)
MySQL >插入菜单(标签,URL)值(我们,'aboutus .html);
查询OK,1行受影响(0.05秒)
MySQL >插入菜单(标签,URL)值('services ','services .html);
查询OK,1行受影响(0.05秒)
MySQL >插入菜单(标签,URL)值('feedback ','feedback .html);
查询OK,1行受影响(0.05秒)
从菜单中选择*;
+ -- + + + ---------- ---------------
ID标签的URL | | | |
+ -- + + + ---------- ---------------
| 1 |家| home.html |
2关于我们aboutus.html | | | |
| 3 |服务| services.html |
| 4 |反馈| feedback.html |
+ -- + + + ---------- ---------------
4行(0秒)


如果插入的记录违反了唯一列中的唯一约束,MySQL将中断操作,提示错误:


MySQL >插入菜单(ID,标签,URL)值(4,'contact我们','contactus .html);
错误1062(23000):重复的条目'4'for key'id


在前面的INSERT语句中添加忽略关键字时,如果语句违反了唯一约束,MySQL甚至不会尝试执行语句。因此,以下语句不会返回错误。


MySQL >插入忽略到菜单(ID,标签,URL)值(4,'contact我们','contactus .html);
查询OK,0行受影响(0秒)
从菜单中选择*;
+ -- + + + ---------- ---------------
ID标签的URL | | | |
+ -- + + + ---------- ---------------
| 1 |家| home.html |
2关于我们aboutus.html | | | |
| 3 |服务| services.html |
| 4 |反馈| feedback.html |
+ -- + + + ---------- ---------------
4行(0秒)


当有许多INSERT语句需要按顺序执行时,忽略关键字使它易于操作。它可以用来确保无论哪个插入包含重复的键值,MySQL都会反弹它(而不是放弃整个操作)。

在这种情况下,我们还可以添加MySQL自动转换的插入操作的加入mysql4.1重复密钥更新条款新增加的更新操作。这一条款必须列出需要更新的领域,这是由UPDATE语句使用列表相同。


MySQL >插入菜单(ID,标签,URL)值(4,'contact我们','contactus .html)
在重复的密钥更新标签= 'contact ->美国,网址= 'contactus HTML;
查询OK,2行受影响(0.05秒)


在这种情况下,如果MySQL发现表已经包含具有相同唯一键的记录,则它将自动更新旧记录,作为在重复密钥更新子句中指定的新值。


从菜单中选择*;
+ -- + + + ------------ ----------------
ID标签的URL | | | |
+ -- + + + ------------ ----------------
| 1 |家| home.html |
2关于我们aboutus.html | | | |
| 3 |服务| services.html |
4我们联系及资源| | | |
+ -- + + + ------------ ----------------
4行(0.01秒)


以上内容是一个小的编辑器,介绍了mysql列中唯一的插入重复值如何解决所有教程,希望对你有所帮助。