mercredi 22 mai 2013

ORA-04091: Table en mutation.

Dans un premier temps, on va essayer de créer un déclencheur (trigger) sur la table EMP du schéma SCOTT.















Voici le code:
create or replace trigger TR_EMP_COUNT
AFTER DELETE ON EMP

FOR EACH ROW
  DECLARE
  num  number;
  BEGIN
      SELECT COUNT(*) INTO NUM
      FROM EMP;
      DBMS_OUTPUT.PUT_LINE(' Nbre d''employés' ||num);
  END;


Ensuite, on essaye de faire un DELETE sur cette table:
DELETE FROM EMP
WHERE DEPTNO=30;

À ce moment là, le trigger se déclenche et Oracle génére une erreur de type table en mutation (ORA-04091).








Pour résoudre ce problème, il y a deux possibilités:















Maintenant, l'opération de DELETE fonctionne parfaitement:

SQL> delete from emp
  2  where deptno=30;

6 rows deleted

Aucun commentaire:

Enregistrer un commentaire