Bonjour à tous,

j'ai deux tables: observateurs (id_obs, nom, prenom) et sortie (id_sortie, date, temperature, libelle).

Mon but c'est de pouvoir dans la colonne "libelle" avoir une concaténation de type: date , prenom nom.

la requête suivante me donne bien le type que je souhaite:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT sortie.date || ' , ' || observateur.prenom ||' ' || observateur.nom
FROM faune.sortie, faune.fk_obs_sortie, faune.observateur
WHERE sortie.id_sortie=fk_obs_sortie.id_sortie AND observateur.id_obs=fk_obs_sortie.id_obs;
maintenant (et c'est là que je bloque), faudrait avoir le résultat de cette requête dans la table sortie et manière automatique à chaque insertion d'une sortie ou d'une modification.

J'ai tenter de faire un trigger:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE OR REPLACE FUNCTION UPDATE()
RETURNS "trigger" AS $nomlibelle$
 
BEGIN
 
	IF sortie.date AND observateur.prenom AND observateur.nom IS NoT NULL 
	THEN
	NEW.nomlibelle:=coalesce(NEW.date||' , '||NEW.prenom||' '||NEW.nom);
	END IF;
	RETURN NEW;
 
END;
$nomlibelle$
LANGUAGE 'plpgsql';
 
CREATE TRIGGER UPDATE 
BEFORE INSERT OR UPDATE
ON faune.sortie FOR EACH ROW
EXECUTE PROCEDURE UPDATE();
mais là ça ne marche pas... je ne peux même pas insérer une nouvelle sortie...

est-ce qu'il faut bien passer par un trigger? si oui, où est mon erreur?
sinon quelle est la marche à suivre?