Bonjour,

Je possède une base de données Oracle 11g Xe avec les 2 tables suivantes :

tb_mesure (#id_mes, fin_theo_mes,…)
tb_decision (#id_deci, mes_id (clé étrangère), date_debut_deci, date_fin_deci,…)

Une mesure possède 0 ou n décisions, et une décision concerne 1 et 1 seule mesure.

Je souhaiterais avoir un trigger sur la table tb_decision qui effectue la chose suivante :

Lorsque l’on ajoute pour la première fois une décision qui concerne la mesure #100 (mes_id = 100, par exemple), le champ date_fin_deci de la table tb_decision prenne automatiquement la valeur fin_theo_mes de la table tb_mesure.

J’ai donc tenté de créer le trigger suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
CREATE or REPLACE TRIGGER tr_decisions_dates 
BEFORE INSERT ON TB_DECISION
FOR EACH ROW
DECLARE v_fin_mes DATE;
BEGIN
  SELECT fin_theo_mes INTO v_fin_mes FROM tb_mesure, tb_decision WHERE :new.mes_id = id_mes; 
  :new.date_fin_deci := v_fin_mes;
END;
Mais mon trigger ne fonctionne pas.

Quelqu'un pourrait-il me conseiller et me dire si je suis dans la bonne direction pour réaliser ce que je souhaite ?

Merci d'avance pour vos réponses.