以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是deptA2F4FAAC A2F4FAC4 152 TM 51251 0 3 0 714 0 --51251是empA2FC79E4 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/