Concaténation automatique sur une colonne
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:
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:
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?