Bonjour,
J'ai un soucis dans la déclaration d'un trigger et je ne trouve malheureusement pas de solution
Voici mon code source :
CREATE OR REPLACE TRIGGER tr_HRES
BEFORE INSERT OR UPDATE OR DELETE
ON Reservation
FOR EACH ROW
DECLARE
NewHRes NUMBER;
HResEns NUMBER;
BEGIN
IF (:old.Nature = 'Cours') THEN
SELECT NbHCRes AS HResEns FROM Enseignement WHERE Matiere = :old.Matiere;
ELSIF (:old.Nature = 'TD') THEN
SELECT NbHTDRes AS HResEns FROM Enseignement WHERE Matiere = :old.Matiere;
ELSE
SELECT NbHTPRes AS HResEns FROM Enseignement WHERE Matiere = :old.Matiere;
END IF;
IF INSERTING THEN
NewHRes := ((:new.HeureFin - :new.HeureDeb)/24) + HResEns;
END IF;
IF UPDATING THEN
IF (:old.HeureFin - :old.HeureDeb) > (:new.HeureFin - :new.HeureDeb) THEN
NewHRes := HResEns - (((:old.HeureFin - :old.HeureDeb) - (:new.HeureFin - :new.HeureDeb))/24);
ELSE
NewHRes := (((:new.HeureFin - :new.HeureDeb) - (:old.HeureFin - :old.HeureDeb))/24) + HResEns;
END IF;
END IF;
IF DELETING THEN
NewHRes := HResEns - ((:old.HeureFin - :old.HeureDeb)/24);
END IF;
IF (NewHRes < 0) THEN
NewHRes := 0;
END IF;
IF (:new.Nature = 'Cours') THEN
UPDATE Enseignement SET NbHCRes=NewHRes WHERE Matiere = :old.Matiere;
ELSIF (:new.Nature = 'TD') THEN
UPDATE Enseignement SET NbHTDRes=NewHRes WHERE Matiere = :old.Matiere;
ELSE
UPDATE Enseignement SET NbHTPRes=NewHRes WHERE Matiere = :old.Matiere;
END IF;
END;
Les erreurs se trouvent au niveau des requêtes ( en haut et en bas )
Je pense que cela doit être une erreur de syntaxe...
Detail : ERREUR à la ligne 33 : PL/SQL: SQL Statement ignored
C'est du Oracle non ? Bon, je connais pas oracle, mais il me semble qu'on écrit OLD et NEW sans les ":" devant.
Erreur dans un trigger en SQL
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.