Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
je suis nouveau et débutant en SIG.
Je souhaiterais concaténer 3 champs (insee,'_'ar_num,'_'lum_numero) d'une table afin de mettre à jour un quatrième champ (ident) de cette même table lorsque l'un des 3 premiers champs cité est modifié.
Je travaille avec PGAdmin.
Si j'ai bien compris, je dois créer une fonction générale que je pourrais éventuellement appliquer à plusieurs tables et ensuite j'applique un trigger sur la table concernée?
J'ai récupéré un exemple que j'ai modifié mais il doit y avoir une erreur dès le départ.
Fonction:
CREATE OR REPLACE FUNCTION nom_fonction()
RETURNS trigger
LANGUAGE 'plpgsql'
COST 100
VOLATILE NOT LEAKPROOF
AS $BODY$
BEGIN
new.ident := concat(insee,'_',ar_numero,'_',lum_numero);
RETURN NEW;
END
$BODY$;
Trigger:
CREATE TRIGGER test
BEFORE INSERT OR UPDATE OF insee, ar_numero, lum_numero
ON schema.matable
FOR EACH ROW
EXECUTE FUNCTION nom_fonction();
Lorsque je modifie un des trois champs dans QGIS, j'ai un message d'erreur me disant que les colonnes sélectionnées n'existent pas:
Impossible de valider les changements pour la couche geo_ep_points_lumineux_plugin
Erreurs : ERREUR : 1 modification(s) de valeurs d'attribut n'ont pas été effectuée(s).
Erreur du fournisseur de données :
Erreur PostGIS lors de la modification d'attribut : ERROR: column "insee" does not exist
LINE 1: SELECT concat(insee,'_',ar_numero,'_',lum_numero)
^
QUERY: SELECT concat(insee,'_',ar_numero,'_',lum_numero)
CONTEXT: PL/pgSQL function nom_fonction() line 3 at assignment
Lorsque je ne renvoie pas à une colonne et uniquement à du texte dans la fonction, le trigger fonctionne et mon champ se remplie avec le texte concerné.
J'espère avoir été clair, et je vous remercie par avance de votre aide.
Hors ligne
Dans la fonction il faut se référer au champ insee par new.insee et non insee tout seul, de même pour les autres champs de la table.
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne
Bonjour,
merci beaucoup pour votre réactivité! Ça ne tenait pas à grand chose...
Hors ligne
Pages : 1