Trigger entre 2 tables reliées 1 à n
Bonjour,
voici deux tables :
table1
Code:
1 2 3
| id1(pk) objectid z
0 1 100
1 2 98 |
table2
Code:
1 2 3 4
| id2(pk) n_sd prof alt_inf
0 1 5
1 1 15
2 2 8 |
objectid fait reference à n_sd (1-n).
L'objectif de la requête dans le trigger est de calculer au moment de l'insertion dans la table 2, la valeur de alt_inf qui est z-prof pour un objectid = n_sd.
Ce qui donne de prime abord :
Code:
1 2 3 4 5
| IF (TG_OP = 'INSERT') THEN
NEW.alti_inf = (select z-NEW.prof from table1, table2
where table2.n_sd = table1.objectid )
RETURN NEW;
END IF ; |
Le hic est que la sous-requête renvoie plusieurs lignes...
J'ai trouvé une parade en créant une colonne dans table 2 qui insére le z de la table 1 pour chaque objectid et dont on se sert pour faire le calcul, mais je me demandais s'il n'y avait pas (sûrement) plus élégant, c'est à dire sans créer ce champ supplémentaire.
Merci pour vos idées.