Indication importante: la dernière ligne de création d'un trigger doit être un END;, suivie d'une ligne contenant seulement '/'.
Indication: le trigger doit se déclencher sur une modification, et tester pour chaque ligne que la nouvelle valeur est plus grande que l'ancienne. Si ce n'est pas le cas, faire un UPDATE de la station pour ajouter la différence entre l'ancienne et la nouvelle valeur.
Solution :
CREATE TRIGGER prix_croissant AFTER UPDATE ON Activite FOR EACH ROW WHEN (new.prix < old.prix) BEGIN UPDATE Station SET tarif = tarif + :old.prix - :new.prix WHERE nomStation = :new.nomStation; END; /
Solution :
ALTER TABLE Station ADD (nbActivites NUMBER (3) DEFAULT 0); CREATE TRIGGER nb_activites AFTER INSERT OR DELETE ON Activite BEGIN UPDATE Station S SET nbActivites = (SELECT COUNT (*) FROM Activite A WHERE S.nomStation = A.nomStation); END; /
Autre possibilité: un trigger par ligne sur les évènements INSERT et DELETE.