Oracle 唯一主鍵引發的行鎖
阿新 • • 發佈:2019-02-12
SQL> create table test(id int PRIMARY KEY, name char(10)); 表已建立。 Session 1: SQL> select * from v$mystat where rownum<2; SID STATISTIC# VALUE ---------- ---------- ---------- 1165 0 0 SQL> select * from test; 未選定行 SQL> insert into test values(1,'a'); 已建立 1 行。 Session 2: SQL> select * from v$mystat where rownum<2; SID STATISTIC# VALUE ---------- ---------- ---------- 1174 0 0 SQL> insert into test values(1,'a'); --堵塞 SQL> select sid,username,machine, BLOCKING_SESSION ,event from v$session where event='enq: TX - row lock contention'; SID USERNAME MACHINE BLOCKING_SESSION EVENT ---------- ------------------------------ ---------------------------------------------------------------- ---------------- ---------------------------------------------------------------- 1174 SYS oadb 1165 enq: TX - row lock contention 1165 堵塞了1174 這是有唯一主鍵的情況下, 那麼沒有唯一主鍵呢? Sesssion 1: SQL> create table test2(id int,name char(10)); 表已建立。 SQL> insert into test2 values(1,'a'); 已建立 1 行。 Session 2: SQL> insert into test2 values(1,'a'); 已建立 1 行。 沒有唯一主鍵,就不會引起行鎖