我有Oracle數據庫11g企業版版本11.2.0.1.0。 我有父表t1和t2與引用t1(col1)的外鍵。 我想知道爲什麼鎖定在那裏? 請檢查我做了什麼......鎖定從父表中刪除而不是錯誤
會議1
SQL> create table t1(col1 char(1), primary key(col1));
Table created.
SQL> insert into t1 values('1');
1 row created.
SQL> insert into t1 values('2');
1 row created.
SQL> insert into t1 values('3');
1 row created.
SQL> insert into t1 values('4');
1 row created.
SQL> insert into t1 values('5');
1 row created.
SQL> commit;
Commit complete.
SQL> create table t2(col1 char(1), col2 char(2), foreign key(col1) references t1(col1));
Table created.
SQL> insert into t2 values('1','0');
1 row created.
SQL> commit;
Commit complete.
SQL> update t2 set col2='9'; --not committed yet!
1 row updated.
會議2
SQL> delete from t1; -- Lock happens here!!!
會議1
SQL> commit;
Commit complete.
會議2
delete from t1 -- The error occurs after I commit updating query in session 1.
*
ERROR at line 1:
ORA-02292: integrity constraint (KMS_USER.SYS_C0013643) violated - child record found
任何人都可以解釋爲什麼發生這種情況?
感謝您的建議......我能讀到關於鎖定機制的任何參考嗎? – KIM
您可能需要從[數據庫概念手冊](http://docs.oracle.com/cd/E11882_01/server.112/e25789/consist.htm#i5704)開始。 –