oracle主外键锁_lock_约束

以scott用户为例.

前言
  1,emp是子表,dept是主表,
        2,emp的列deptno外键依赖于dept之deptno
        3,emp的列deptno仅构建外键约束,但未建立索引
操作:
    ---在一个会话
  1,delete from emp where emp.deptno=10;
    --以sysdba在另一个会话查询上述会话
  2,select * from v$lock where sid in(152);
    ADDR     KADDR           SID TYPE        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
-------- -------- ---------- ---- ---------- ---------- ---------- ---------- ---------- ----------
A2F4F9E8 A2F4FA00        152 TM        51249          0          2          0        714          0 --51249是dept
A2F4FAAC A2F4FAC4       152 TM        51251          0          3          0        714          0 --51251是emp
A2FC79E4 A2FC7A08       152 TX       524321       3234          6          0        714          0
   --第三个新会话
2,delete from dept where deptno=10;此时就会发生锁等待了


小结:
1,产生此种情形,须先执行删除子表的操作,而非主表(注:如果先删除主表,会提示违反外键约束之类的信息)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-731655/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9240380/viewspace-731655/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值