Dans une table, je souhaite renseigner la valeur de deux de ses champs, au moment d'un insert.
J'ai donc pensé à faire un trigger sur le after insert, et faire un update :
Erreur --> table mutante (http://sgbd.developpez.com/oracle/ora-04091/).
J'ai pris le problème dans l'autre sens, et j'ai cherché à utiliser le before insert :
Ca compile sans problème, mais ... ca n'a aucun effet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 create or replace trigger CALCULPR.FORMAT_PRODUIT_ENTETE_PIECE before insert on CALCULPR.ENTETE_PIECE for each row when ((upper(substr(NEW.IDART, 1, 3))) <> 'EPH') begin :NEW.RACINE_PDT := substr(:NEW.IDART, 1, length(:NEW.IDART) - 4); :NEW.FINIT_PDT := substr(:NEW.IDART, length(:NEW.IDART) - 3, 4); end; /
J'ai mis un raise_application_error pour être certain que mon trigger est bien appellé : effectivement, il se déclanche bien sur l'insert.
Je ne vois pas ce qui cloche dans mon trigger (j'en fait très rarement).
Quelqu'un aurait-il une idée ?
Partager