oracle删除父表,oracle-锁定从父表删除而不是错误

我有Oracle数据库11g企业版11.2.0.1.0版.

我有父表t1和t2,并带有引用t1(col1)的外键.

我想知道的是为什么有锁?

请检查我做了什么…

第一场

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.

第二场

SQL> delete from t1; -- Lock happens here!!!

第一场

SQL> commit;

Commit complete.

第二场

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

谁能解释我为什么会这样?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值