oracle帶條件的Insert語句


背景

在一條記錄完結時,自動向表中加入一條新的記錄,采用的是事務處理,修改現有記錄,並新增一條記錄,直接采用的insert語句會報錯

//主鍵沖突
unique constraint (XXXXXX) violated

其實沒有主鍵沖突,但是不知道為什么它會報錯,並且插入也是成功,也就說,插入成功還拋出異常,很懵逼

解決思路

插入的時候判斷該記錄是否存在,然而我們通常使用where都是在查、改、刪,很少在增中使用where。

 

一通倒騰

 

insert into 'tablename' 
(column1, column2,,,,,) 
select 
各列的值
from
dual
where not exists
(select * from tablename where 判斷條件)

 

這里注意兩點

  1. 不能有values,通常我們在insert數據時都會加上values,但是該場景下,不能加(這是我經歷的坑)
  2. dual不能更改,這個是oracle數據庫中內置的一個表,用於不明確的查詢源,有興趣可以查找更多的資料


免責聲明!

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



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