小编Tat*_*ana的帖子

从两个会话中插入到唯一列的相同值(Oracle)

我有一个问题:我有一个表T,其中一列具有唯一约束

CREATE TABLE T (ID NUMBER,
                UNIQUE (ID));
Run Code Online (Sandbox Code Playgroud)

会话1完成插入该表

INSERT INTO T(id) VALUES(1);
Run Code Online (Sandbox Code Playgroud)

第2节尝试将相同的值合并到该表

 MERGE INTO t
 USING (SELECT 1 col FROM dual) s
    ON (t.id = s.col)
  WHEN NOT MATCHED THEN 
INSERT (id) VALUES (col);
Run Code Online (Sandbox Code Playgroud)

此时会话2被阻止并等待会话1被提交或回滚.现在我在第1节中运行

COMMIT;
Run Code Online (Sandbox Code Playgroud)

此时会话2中发生错误

ORA-00001:违反了唯一约束

有什么选择我怎么能避免它?

PS的问题是我在同一个表中INSERT到某个表和MERGE(在ON部分使用UNIQUE列).此INSERT和MERGE在两个不同的会话中单独调用.有时MERGE会因为上面描述的情况而下降.我希望我把它描述得可以理解

sql oracle transactions insert unique

6
推荐指数
1
解决办法
621
查看次数

oracle 存储过程中的更新语句不起作用

我在 oracle 存储过程中有一个简单的更新语句。它成功执行但不更新表。

CREATE OR REPLACE PROCEDURE UpdateSourceLog
( SourceLogId IN NUMBER, TotalRowCount IN INT,Status IN VARCHAR)

AS
BEGIN
        UPDATE  SourceLog
        SET     Status = Status,
                TotalRowCount = TotalRowCount,
                EndTime = SYSDATE
        WHERE   SourceLogId = SourceLogId;
        COMMIT;
END;
Run Code Online (Sandbox Code Playgroud)

我尝试更改与列名不同的参数名称。然后它也不起作用。我试过匿名块。我无法找出问题所在。请在这方面帮助我。谢谢!

oracle stored-procedures

2
推荐指数
1
解决办法
4119
查看次数

标签 统计

oracle ×2

insert ×1

sql ×1

stored-procedures ×1

transactions ×1

unique ×1