同样的sql在两个oracle,sql – 从两个会话INSERT到唯一列相同的值(Oracle)
生活随笔
收集整理的這篇文章主要介紹了
同样的sql在两个oracle,sql – 从两个会话INSERT到唯一列相同的值(Oracle)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我有一個問題:
我有一個表T,其中一列具有唯一約束
CREATE TABLE T (ID NUMBER,
UNIQUE (ID));
會話1完成插入該表
INSERT INTO T(id) VALUES(1);
第2節嘗試將相同的值合并到該表
MERGE INTO t
USING (SELECT 1 col FROM dual) s
ON (t.id = s.col)
WHEN NOT MATCHED THEN
INSERT (id) VALUES (col);
此時會話2被阻止并等待會話1被提交或回滾.
現在我在第1節中運行
COMMIT;
此時會話2中發生錯誤
ORA-00001: unique constraint violated
有什么選擇我怎么能避免它?
附:問題是我在同一個表中INSERT到某個表和MERGE(在ON部分使用UNIQUE列).此INSERT和MERGE在兩個不同的會話中單獨調用.有時MERGE會因為上面描述的情況而下降.
我希望我把它描述得可以理解
總結
以上是生活随笔為你收集整理的同样的sql在两个oracle,sql – 从两个会话INSERT到唯一列相同的值(Oracle)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 数据 导出 excel 自
- 下一篇: oracle11g安装到第7步,cent