ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle主外键锁_lock_约束

oracle主外键锁_lock_约束

原创 Linux操作系统 作者:wisdomone1 时间:2012-06-01 11:03:17 0 删除 编辑
以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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
提供针对oracle初学者及进阶的数据库培训,欢迎大家咨询: 微信: wisdomone 微信公众号: lovedb qq: 305076427 微博: wisdomone9

注册时间:2008-04-04

  • 博文量
    2164
  • 访问量
    11739535