Hello guys
Hope you can help me as soon as possible . I wrote a trigger which goes like ..
CREATE OR REPLACE TRIGGER SALCHK
BEFORE INSERT OR UPDATE ON EMP
FOR EACH ROW
DECLARE
MAXSAL NUMBER;
MINSAL NUMBER;
APPERR EXCEPTION;
BEGIN
SELECT MAX(SAL),MIN(SAL) INTO MAXSAL,MINSAL FROM EMP WHERE JOB = :NEW.JOB;
IF :NEW.SAL < MINSAL OR :NEW.SAL > MAXSAL THEN
RAISE APPERR;
END IF;
EXCEPTION
WHEN APPERR THEN
RAISE_APPLICATION_ERROR(-20001,' SALARY MUST BE GREATER THAN '||MINSAL||' AND LESS THAN '||MAXSAL);
END;
/
SQL> START TRG1
Trigger created.
SQL> INSERT INTO EMP(EMPNO,ENAME,JOB,SAL,DEPTNO) VALUES (1111,'POPO','CLERK',2500,20);
INSERT INTO EMP(EMPNO,ENAME,JOB,SAL,DEPTNO) VALUES (1111,'POPO','CLERK',2500,20)
*
ERROR at line 1:
ORA-20001: SALARY MUST BE GREATER THAN 800 AND LESS THAN 1300
ORA-06512: at "BENLY.SALCHK", line 17
ORA-04088: error during execution of trigger 'BENLY.SALCHK'
SQL> UPDATE EMP SET SAL=2000 WHERE EMPNO=7369 AND JOB='CLERK';
UPDATE EMP SET SAL=2000 WHERE EMPNO=7369 AND JOB='CLERK'
*
ERROR at line 1:
ORA-04091: table BENLY.EMP is mutating, trigger/function may not see it
ORA-06512: at "BENLY.SALCHK", line 6
ORA-04088: error during execution of trigger 'BENLY.SALCHK'
The trigger is created but the problem is its showing the message as shown above if you do insert or update.
if possible kindly rectify the problem and give me some tips of table mutating becuase its comming in almost all trigger what i am writing
thanks in advance
regards
bins
