建一触发器,当表的某字段值更改为1(原来为0)后,删除该表中字段值为1的记录
例如:表tableA;但字段flag的值变更为1后,删除tableA中flag=1的所有记录
Create Or Replace Trigger tr_tableA
        After  Update
        ON  tableA
        FOR  EACH  ROW      BEGIN
    delete tableA t where t.flag=1;
END;上述触发器在运行时报错;Ora-04091,Ora-06512,Ora-04088错误;
按照帖子http://bbs.csdn.net/topics/360243369中的方法
也不行;请问有何解决办法Oracle

解决方案 »

  1.   

     delete From tableA t where t.flag=1;
      

  2.   


    哥们,delete 带不带from都是一样的。。
      

  3.   

    你这个不行啊,update的时候,又会触发触发器的里面的dml语句,这样在一个事务中是会出错的。
    除非你在触发器中加个自制事务Create Or Replace Trigger tr_tableA
            After  Update
            ON  tableA
            FOR  EACH  ROW      
    declare
      pragma autonomous_transaction;
    BEGIN
        delete tableA t where t.flag=1;
    END;