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:
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.
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;
J'ai tenter de faire un trigger:
mais là ça ne marche pas... je ne peux même pas insérer une nouvelle sortie...
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();
est-ce qu'il faut bien passer par un trigger? si oui, où est mon erreur?
sinon quelle est la marche à suivre?
Partager