最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql中 unique列插入重復(fù)值該怎么解決呢

 更新時(shí)間:2015年11月02日 11:48:48   投稿:mrr  
本文給大家介紹mysql中unique列插入重復(fù)值的解決方案,主要基于mysql平臺(tái),通過(guò)這些,可以做到一些新的功能和應(yīng)用。特此把本文本文分享給廣大開發(fā)人員

當(dāng)unique列在一個(gè)UNIQUE鍵上插入包含重復(fù)值的記錄時(shí),我們可以控制MySQL如何處理這種情況:使用IGNORE關(guān)鍵字或者ON DUPLICATE KEY UPDATE子句跳過(guò)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) 

如果現(xiàn)在在unique列插入一條違背唯一約束的記錄,MySQL會(huì)中斷操作,提示出錯(cuò):

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

在前面的INSERT語(yǔ)句添加IGNORE關(guān)鍵字時(shí),如果認(rèn)為語(yǔ)句違背了唯一約束,MySQL甚至不會(huì)嘗試去執(zhí)行這條語(yǔ)句,因此,下面的語(yǔ)句不會(huì)返回錯(cuò)誤:

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) 

當(dāng)有很多的INSERT語(yǔ)句需要被順序地執(zhí)行時(shí),IGNORE關(guān)鍵字就使操作變得很方便。使用它可以保證不管哪一個(gè)INSERT包含了重復(fù)的鍵值,MySQL都回跳過(guò)它(而不是放棄全部操作)。

在這種情況下,我們還可以通過(guò)添加MySQL4.1新增加的ON DUPLICATE KEY UPDATE子句,使MySQL自動(dòng)把INSERT操作轉(zhuǎn)換為UPDATE操作。這個(gè)子句必須具有需要更新的字段列表,這個(gè)列表和UPDATE語(yǔ)句使用的列表相同。

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發(fā)現(xiàn)表已經(jīng)包含具有相同唯一鍵的記錄,它會(huì)自動(dòng)更新舊的記錄為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) 

以上內(nèi)容是小編給大家介紹的Mysql中 unique列插入重復(fù)值該怎么解決的全部教程,希望對(duì)大家有所幫助。

相關(guān)文章

最新評(píng)論

绥德县| 宜州市| 四川省| 寿阳县| 苍梧县| 襄城县| 新丰县| 土默特左旗| 东阿县| 诸城市| 林口县| 通榆县| 司法| 普洱| 西林县| 普兰店市| 广饶县| 乌拉特后旗| 苍山县| 蒲城县| 苍山县| 遵义市| 新和县| 海城市| 临颍县| 胶州市| 秭归县| 壶关县| 弋阳县| 永安市| 通河县| 枣庄市| 怀仁县| 涞水县| 扬州市| 合肥市| 苍山县| 大城县| 合作市| 周至县| 抚远县|