触发器编写如下,用到了自治事务,可是编译不过去,提示 pragma autonomous_transaction cannot be declared here
帮忙解决下,为什么不行呢?各位辛苦了~CREATE OR REPLACE TRIGGER trig_ac30_AAE008
AFTER INSERT OR UPDATE OF AAE008
ON AAE008_UPDATE
FOR EACH ROW
BEGIN
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;
END;
帮忙解决下,为什么不行呢?各位辛苦了~CREATE OR REPLACE TRIGGER trig_ac30_AAE008
AFTER INSERT OR UPDATE OF AAE008
ON AAE008_UPDATE
FOR EACH ROW
BEGIN
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;
END;
BEGIN
declare
PRAGMA AUTONOMOUS_TRANSACTION;
begin 第一个BEGIN去掉,最后一个END去掉
AFTER insert or update of AAE008
ON AAE008_UPDATE
for each row
BEGIN --这个begin用不着,declare在begin前面。
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;
END; --这个end没用的,对应的第一begin对了你这里看上去是修改ac30这个表啊,不是AAE008_UPDATE 这个表啊,干吗要自治事务?而且修改的set,where都是:new,用不到事务啊。