sql解決主鍵沖突


在數據插入的時候,假設主鍵對應的值已經存在,則插入失敗!這就是主鍵沖突。
當主鍵存在沖突(duplicate key)的時候,可以選擇性的進行處理,即忽略、更新或者替換。

1.忽略

insert ignore into table

保持原記錄,忽略新插入的記錄

 

2.替換

replace into table

替換原記錄,即先刪除原記錄,再插入新的記錄

 

3. 更新

insert into table value("xx","xx") ON DUPLICATE KEY UPDATE

其實這個是原本需要執行3條SQL語句(SELECT,INSERT,UPDATE),縮減為1條語句即可完成。

IF (SELECT * FROM where 存在) { UPDATE SET WHERE ; } else { INSERT INTO; }

如:

mysql> insert into Tble values (1,'xxx','xxx') ON DUPLICATE KEY UPDATE status ='drain'; Query OK, 2 rows affected (0.00 sec)

上面語句偽代碼表示即為

if (select * from table where id=1) { update device set status ='drain' where id=1 } else { insert into table value (1,'xxx','xxx') }

很明顯,id=1 是有的,這樣就執行update操作

mysql> select * from table; +-------+--------+-----------+ | id| status | spec_char | +-------+--------+-----------+ | 1 | drain | yangting | | 2 | dead | zhong | +-------+--------+-----------+ 2 rows in set (0.00 sec)
 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM