触发器自治事务问题
触发器现在编译已经通过了,但是在UPDATE AC30表AAE008字段的时候,触发下面的触发器,没有执行通过。
提示错误:deadlock detected while waiting for resource。等待资源的过程中发生死锁,想想也是啊,对于自治事务了解不深,高手帮忙看看如何处理啊。对操作自身表的时候触发器有没有其他的实现方式?
CREATE OR REPLACE TRIGGER trig_ac30_AAE008
AFTER insert or update of AAE008
ON AC30
FOR EACH ROW
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
if (:NEW.AAE008 <> :OLD.AAE008) then
UPDATE ac30
SET AAE008 = :NEW.AAE008, aae010 = :NEW.aae010
WHERE AAC001 = :NEW.AAC001
AND AAE140 = '32';
COMMIT;
end if;
END;
提示错误:deadlock detected while waiting for resource。等待资源的过程中发生死锁,想想也是啊,对于自治事务了解不深,高手帮忙看看如何处理啊。对操作自身表的时候触发器有没有其他的实现方式?
CREATE OR REPLACE TRIGGER trig_ac30_AAE008
AFTER insert or update of AAE008
ON AC30
FOR EACH ROW
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
if (:NEW.AAE008 <> :OLD.AAE008) then
UPDATE ac30
SET AAE008 = :NEW.AAE008, aae010 = :NEW.aae010
WHERE AAC001 = :NEW.AAC001
AND AAE140 = '32';
COMMIT;
end if;
END;
...全文
相关推荐
oracle触发器调用存储过程
oracle 触发器 调用 存储过程 Oracle自治事务(Autonomous Transaction)
Oracle数据完整性嵌套事务调用分析研究
本文分析一个问题的多种可能读者可以根据现象来判断您属于那种情况来最短时间内解决问题。讨论了在处理数据直接的事务的时候,保存数据完整性的方法。
Oracle变异表错误解决方案选择.pdf
Oracle变异表错误解决方案选择.pdf
oracle自治事务(Trigger)
在触发器中使用自制事务及调用存储过程 Declare Pragma Autonomous_Transaction; ...
Oracle中怎样用自治事务保存日志表
自治事务是与主事务相分离的,所以它不能检测到被修改过的行的当前状态。这就好像在主事务提交之前,它们一直处于单独的会话里,对自治事务来说,它们是不可用的。然而,反过来情况就不同了:主事务能够检测到已经执行过的自治事务的结果。要创建一个自治事务,您必须在匿名块的最高层或者存储过程、函数、数据包或触发的定义部分中,使用PL/SQL中的PRAGMA AUTONOMOUS_TRANSACTION语句。在这样的模块或过程中执行的SQL Server语句都是自治的。


基础和管理
