欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

如果現(xiàn)在在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關(guān)鍵字時,如果認(rèn)為語句違背了唯一約束,MySQL甚至不會嘗試去執(zhí)行這條語句,因此,下面的語句不會返回錯誤:

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語句需要被順序地執(zhí)行時,IGNORE關(guān)鍵字就使操作變得很方便。使用它可以保證不管哪一個INSERT包含了重復(fù)的鍵值,MySQL都回跳過它(而不是放棄全部操作)。

在這種情況下,我們還可以通過添加MySQL4.1新增加的ON DUPLICATE KEY UPDATE子句,使MySQL自動把INSERT操作轉(zhuǎn)換為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發(fā)現(xiàn)表已經(jī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ù)值該怎么解決的全部教程,希望對大家有所幫助。

相關(guān)文章

  • 教你如何在MySQL命令行中使用SQL語句的規(guī)則

    教你如何在MySQL命令行中使用SQL語句的規(guī)則

    這篇文章主要介紹了教你如何在MySQL命令行中使用SQL語句的規(guī)則 ,需要的朋友可以參考下
    2014-08-08
  • MySQL單表查詢常見操作實(shí)例總結(jié)

    MySQL單表查詢常見操作實(shí)例總結(jié)

    這篇文章主要介紹了MySQL單表查詢常見操作,結(jié)合實(shí)例形式總結(jié)分析了MySQL創(chuàng)建表以及條件查詢常見操作技巧,需要的朋友可以參考下
    2018-06-06
  • SQL去重方法匯總

    SQL去重方法匯總

    這篇文章主要給大家分享了SQL去重方法匯總,在使用SQL提數(shù)的時候,常會遇到表內(nèi)有重復(fù)值的時候,比如我們想得到?uv?(獨(dú)立訪客),就需要做去重。下面我們就來看看去重都有哪些方法吧
    2022-01-01
  • Mysql prepare預(yù)處理的具體使用

    Mysql prepare預(yù)處理的具體使用

    本文主要介紹了Mysql prepare預(yù)處理,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • MySQL中實(shí)現(xiàn)插入或更新操作(類似Oracle的merge語句)

    MySQL中實(shí)現(xiàn)插入或更新操作(類似Oracle的merge語句)

    這篇文章主要介紹了在MySQL中實(shí)現(xiàn)插入或更新操作(類似Oracle的merge語句)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • MySQL中Buffer?Pool內(nèi)存結(jié)構(gòu)詳情

    MySQL中Buffer?Pool內(nèi)存結(jié)構(gòu)詳情

    這篇文章主要介紹了MySQL中Buffer?Pool內(nèi)存結(jié)構(gòu)詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • MySQL的時間差函數(shù)(TIMESTAMPDIFF、DATEDIFF)、日期轉(zhuǎn)換計(jì)算函數(shù)(date_add、day、date_format、str_to_date)

    MySQL的時間差函數(shù)(TIMESTAMPDIFF、DATEDIFF)、日期轉(zhuǎn)換計(jì)算函數(shù)(date_add、day、da

    這篇文章主要介紹了MySQL的時間差函數(shù)(TIMESTAMPDIFF、DATEDIFF)、日期轉(zhuǎn)換計(jì)算函數(shù)(date_add、day、date_format、str_to_date),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • MySQL union 語法代碼示例分析

    MySQL union 語法代碼示例分析

    主要介紹的是MySQLunion 語法代碼演示,我前兩天在相關(guān)網(wǎng)站看見MySQLunion 語法代碼演示的資料,覺得挺好,就拿出來供大家分享。希望在你今后的學(xué)習(xí)中會對你有所幫助。
    2010-06-06
  • mysql ON DUPLICATE KEY UPDATE語句示例

    mysql ON DUPLICATE KEY UPDATE語句示例

    本文介紹一下關(guān)于mysql中INSERT INTO… ON DUPLICATE KEY UPDATE用法
    2013-11-11
  • 使用xtrabackup實(shí)現(xiàn)mysql備份

    使用xtrabackup實(shí)現(xiàn)mysql備份

    Xtrabackup 是percona公司的開源項(xiàng)目,用以實(shí)現(xiàn)類似innodb官方的熱備份工具InnoDB Hot Backup的功能,能夠非??焖俚貍浞菖c恢復(fù)MySQL數(shù)據(jù)庫。今天我們就來詳細(xì)討論下Xtrabackup的使用方法
    2016-11-11

最新評論