不可能,触发器阻止不了删除Flag='0'的记录
你还是用前端控制

解决方案 »

  1.   

    lgone~9i >create table t (n number,v varchar2(20));表已创建。lgone~9i >insert into t values(1,'lg');已创建 1 行。lgone~9i >commit;提交完成。lgone~9i >create or replace trigger t_t before update or delete on  t for each row
      2  begin
      3    if :old.n=1 then
      4     raise_application_error(-20001,'ok');
      5    end if;
      6  end;
      7  /触发器已创建lgone~9i >update t set v='lgone';
    update t set v='lgone'
           *
    ERROR 位于第 1 行:
    ORA-20001: ok
    ORA-06512: 在"LGONE.T_T", line 3
    ORA-04088: 触发器 'LGONE.T_T' 执行过程中出错
    lgone~9i >select * from t;         N V
    ---------- --------------------
             1 lglgone~9i >delete from t;
    delete from t
                *
    ERROR 位于第 1 行:
    ORA-20001: ok
    ORA-06512: 在"LGONE.T_T", line 3
    ORA-04088: 触发器 'LGONE.T_T' 执行过程中出错
    lgone~9i >select * from t;         N V
    ---------- --------------------
             1 lg