CREATE OR REPLACE TRIGGER T_TAKEDEPTNUM BEFORE INSERT OR UPDATE ON EMP FOR EACH ROW DECLARE WRK_CNT NUMBER(20):=0; BEGIN SELECT COUNT(*) INTO WRK_CNT FROM EMP WHERE EMP.DEPTNO=:NEW.DEPTNO ; IF WRK_CNT>0 THEN DBMS_OUTPUT.PUT_LINE('RENSHUXIANZHI'); --rollback;(不能在触发器中执行rollback) END IF; END;
CREATE OR REPLACE TRIGGER T_TAKEDEPTNUM BEFORE INSERT OR UPDATE ON EMP FOR EACH ROW
DECLARE
WRK_CNT NUMBER(20):=0;
BEGIN
SELECT COUNT(*) INTO WRK_CNT FROM EMP WHERE EMP.DEPTNO=:NEW.DEPTNO ;
IF WRK_CNT>0 THEN
DBMS_OUTPUT.PUT_LINE('RENSHUXIANZHI');
--rollback;(不能在触发器中执行rollback)
END IF;
END;
笔误,在你给的情形下应该是
IF WRK_CNT>30 THEN
不是不能用触发器,这本身就是触发器,只是ROLLBACK这个指令不能直接在这用,否则编译不通过。