我们有简单的案例,如
Create table t1 (c1 number primary);
会话1:
insert into t1 values (1); -- **session1 does not commit transaction**
会话2:
insert into t1 values (2);
session2是否挂起/等待session1提交/回滚事务,因为我们正在插入不同的值?
答案 0 :(得分:1)
由于您要插入不同的值,会话2的插入的合法性在会话1上是独立的 - 因此它不会挂起,它只会成功(或者如果该值已经失败,则使用ORA-00001由于某种原因存在于表中。)
会话在这种用例中挂起的唯一情况是Oracle无法确定插入值是否会违反约束。例如,如果两个会话都插入了相同的值,则第一个会成功,第二个会挂起。如果第一个会话提交,则第二个会话将因ORA-00001错误而失败。如果第一个回滚,第二个将成功。