建立一个cursor,查询条件为删除的条件
当fetih后如果rowcount大于1
RAISE一个例外

解决方案 »

  1.   

    谢谢zhangv(terror)的提示,如果能把脚本写出来就更好了。
      

  2.   

    你删除的这个表是不是要建TRIGGER的表啊,如果是的话,为什么不干脆在前端发
    delete 命令的时候判断SQLNRows数量,如果大于1 就rollback
      

  3.   

    如果是在删除该表记录时删除别的表并判断别的表删除数,则可以用以下TRIGGER
    create or replace trigger testaaa_afttrig
    AFTER DELETE
    ON testaaa
    FOR EACH ROW
    DECLARE
    BEGIN
      DELETE FROM testbbb WHERE testbbb.a1 =:OLD.a1;
      if sql%rowcount>1 then
         raise_application_error(-20001,'1111');
      end if;
    END;哪个错误你自己编啦
      

  4.   

    谢谢大家!
    前端实现当然简单了,难就难在后台实现。
    我自己找出了解决办法,各位可以看看:CREATE OR REPLACE PACKAGE stat IS 
     rowcnt INTEGER; 
    END; 

     
    CREATE OR REPLACE TRIGGER bt BEFORE DELETE ON dept
    BEGIN 
     stat.rowcnt := 0; 
    END; 

     
    CREATE OR REPLACE TRIGGER rt BEFORE DELETE ON dept
    FOR EACH ROW 
    BEGIN 
     stat.rowcnt := stat.rowcnt + 1; 
     if stat.rowcnt > 1 then
        raise_application_error(-20002,'删除的纪录数多于一个');
      end if;
    END; 
    /