触发器造成死锁问题

agoni9091 2015-08-26 09:52:26
表A有以下列:divid, d_xmid, d_ypx, d_xpx,
表B有以下列:divid, projectid d_xmpx1
其中:divid=divid,xmid=projectid

现在有如下业务要求:如果A表的d_xpx发生update,就把更新的数值触发到B表的d_xmpx1。同时又把这个数值也触发到A表的d_ypx。

我现在的实现方式:在A表建一个触发器:
create or replace trigger A_update

after UPDATE OF d_xpx

on A

for each row

begin

update B set d_xmpx1 =:new.d_xpx where divid=:old.divid and :old.d_xmid=projectid;

end;


同时又在B表建一个触发器:
create or replace trigger B_update
after update of d_xmpx1
on B
for each row
declare
pragma autonomous_transaction;

begin

update A set d_ypx=:new.d_xmpx1;

end;

出现的问题:只要执行A表的update,就会提示死锁。有什么解决办法吗
...全文
318 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xu176032 2015-08-26
  • 打赏
  • 举报
回复
在 trigger B_update 这个里面加上commit试试,不行的话把A的触发器也加上自治事务,再试试

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧