如果是在删除该表记录时删除别的表并判断别的表删除数,则可以用以下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;哪个错误你自己编啦
谢谢大家! 前端实现当然简单了,难就难在后台实现。 我自己找出了解决办法,各位可以看看: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; /
delete 命令的时候判断SQLNRows数量,如果大于1 就rollback
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;哪个错误你自己编啦
前端实现当然简单了,难就难在后台实现。
我自己找出了解决办法,各位可以看看: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;
/