请问怎么在Oracle触发器中实现rollback功能??

解决方案 »

  1.   


    采用自治事务的方式,可以在trigger里rollback or commit;
    例子如下:
    CREATE OR REPLACE TRIGGER TRI_TRACE
      BEFORE INSERT OR DELETE OR UPDATE ON XXTABLE
      FOR EACH ROW
    DECLARE
      PRAGMA AUTONOMOUS_TRANSACTION;  -- 声明自治事务
    BEGIN
      IF UPDATING THEN
         ................
         ................;
      END IF;
         ........
      
      IF :NEW.ID = 1001 THEN
        ROLLBACK;  -- 回滚上面的操作
      ELSE
        COMMIT;  -- 也可以提交上面的操作.
      END IF;
    EXCEPTION
      WHERE OTHERS THEN
      NULL;
    END;
    /