/*
drop table emp; --if exists?
create table emp(
empid number(5),
empname varchar2(100),
empage number(5)
);
*/
truncate table emp;
insert into emp values(1,'
chenzw',27);
insert into emp values(2,'
chenzz',27);
commit;
--sqlplus窗口A 为empid为1的表加排他锁
update emp set empage=empage+1 where empid=1;
--sqlplus窗口B 为empid为2的表加排他锁
update emp set empage=empage+2 where empid=2;
--sqlplus窗口A 检测到死锁
update emp set empage=empage+1 where empid=2;
--sqlplus窗口B 检测到死锁
update emp set empage=empage+2 where empid=1;
--在窗口A上面运行的示例程序如下:
SQL> truncate table emp;
表被截断。
SQL> insert into emp values(1,'
chenzw',27);
已创建 1 行。
SQL> insert into emp values(2,'
chenzz',27);
已创建 1 行。
SQL> commit;
提交完成。
SQL> update emp set empage=empage+1 where empid=1;
已更新 1 行。
SQL> update emp set empage=empage+1 where empid=2;
update emp set empage=empage+1 where empid=2
*
第 1 行出现错误:
ORA-00060: 等待资源时检测到死锁