Bonjour,

voici deux tables :
table1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
id1(pk) objectid z
0        1       100
1        2       98
table2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.