帮忙分析下,下面的触发器,是否存在死锁!
写法一:
create trigger tr_test
after update of a1 on A
begin
update B set B.a1 where ...
end; create trigger tr_test
after update of a1 on B
begin
update B set B.a2 where ...
end;写法二:
create trigger tr_test
after update of a1 on A
begin
update B set B.a1 where ...
update B set B.a1 where ...
end;create trigger tr_test
after update of a1 on B
begin
update B set B.a2 where ...
end;
写法一:
create trigger tr_test
after update of a1 on A
begin
update B set B.a1 where ...
end; create trigger tr_test
after update of a1 on B
begin
update B set B.a2 where ...
end;写法二:
create trigger tr_test
after update of a1 on A
begin
update B set B.a1 where ...
update B set B.a1 where ...
end;create trigger tr_test
after update of a1 on B
begin
update B set B.a2 where ...
end;
解决方案 »
- oracle存储过程
- 表里存储一系列字段,如何根据表中的字段排名并乘以权重,计算出总排名
- 关于PLSQL中使用DB_LINK写表,速度很慢--请教
- oracle自带jvm版本升级
- 能否去除窗口函数中partition by子句的排序功能呢?
- 急急,数据库导库字符集问题?????
- 怎样使新增的回滚段在数据库启动时自动在线?
- 在win2000的环境下在sql_plus下执行命令如show SGA前面是否要加标识符
- 关于oracle 9i for linux的中文显示问题请教
- django.db.utils.DatabaseError: ORA-12541: TNS:no listener
- 紧急:.dmp文件如何导入到informix数据库中,或者从.dmp中提取原始SQL
- 急求存储过程写法!
create trigger tr_test
after update of a1 on A
begin
update B set B.a1 where ...
update B set B.a2 where ...
end;
谢谢!你这样写的确是对的!但是实际的情况不是这样的!
问题是这样的
create trigger tr_test
after update of a1 on A
begin
update B set B.a1 where ...
end; 我只写了这个触发器!
但是我发现我在更新A表的a1的时候,跟新成功!
用
select
(select username from v$session where sid=a.sid) blocker,
a.sid, 'is blocking',
(select username from v$session where sid=b.sid) blockee,
b.sid
from v$lock a,v$lock b
where a.block=1 and b.request>0
and a.id1=b.id1
and a.id2=b.id2
查询的结果里面有B表!
但是用在10g的em下面看,有个语句update b set b.b2='' where ...处于等待的状态!
但是B表我查了没有其他的触发器!
create trigger tr_test
before update of a1 on A
begin
update B set B.a1 where ...
end; create trigger tr_test
before update of a1 on B
begin
update B set B.a2 where ...
end;