触发器编写如下,用到了自治事务,可是编译不过去,提示 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;

解决方案 »

  1.   

      FOR EACH ROW 
    BEGIN 
      declare 
        PRAGMA AUTONOMOUS_TRANSACTION; 
      begin 第一个BEGIN去掉,最后一个END去掉
      

  2.   

    CREATE OR REPLACE TRIGGER trig_ac30_AAE008
      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,用不到事务啊。