事务与锁定-模拟死锁产生的情景

/*
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: 等待资源时检测到死锁
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值