Je reçois une curieuse erreur sur un AVANT INSERT TRIGGER, que je ne comprends pas. Même après avoir lu plusieurs questions postées ici avec des problèmes similaires.java.sql.BatchUpdateException: ORA-04091 sur INSERT AVANT TRIGGER
failed to process "method": category_id = 'foo' and request_id = '99' error: java.sql.BatchUpdateException: ORA-04091: table SCHEMA.ANIMAL_TABLE is mutating, trigger/function may not see it ORA-06512: at "SCHEMA.TRIGGER_NAME", line 7 ORA-04088: error during execution of trigger 'SCHEMA.TRIGGER_NAME'
Voici le déclencheur:
CREATE OR REPLACE TRIGGER TRIGGER_NAME
BEFORE INSERT ON animal_table FOR EACH ROW WHEN (NEW.animal_type = 'cats')
DECLARE base_animal_id NUMBER(19,0); base_amount NUMBER(19,0);
BEGIN
SELECT animal_nbr INTO base_animal_id
FROM animal_table
WHERE category_id = :NEW.category_id AND summary_id = :NEW.summary_id
AND animal_type = 'special';
SELECT animal_amount INTO base_amount
FROM animal_table
WHERE category_id = :NEW.category_id AND summary_id = :NEW.summary_id
AND animal_type = 'special';
IF :NEW.category_id = 'foo' THEN
:NEW.animal_info1 := base_animal_id;
:NEW.animal_info2 := base_amount;
:NEW.animal_info3 := '00';
END IF;
END;
Je connais les règles concernant les modifications sur la même table que le déclencheur est détenu, mais je aussi quelque chose de rouge qu'il devrait fonctionner lors du changement de nouvelles colonnes et seulement pour les: nouveaux champs. Je pensais aussi qu'il manquait peut-être le UPDATE comme événement déclencheur, mais ce n'était pas le cas. Quelqu'un peut-il m'aider s'il-vous-plaît? Comme je suis nouveau pour les déclencheurs et PL/SQL.
merci, L ukas ... J'étais sur le point de faire ça. –