我有 Oracle Database 11g Enterprise Edition Release 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
谁能解释我为什么会这样?