Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Wed 16 February 2022 10:24

image95
Participant assidu
Date d'inscription: 6 Sep 2014
Messages: 246

Postgis trigger : peupler auto. champ geom depuis champs X/Y

Bonjour,


J'arrive bien à "peupler" mon champ geom depuis les champs X/Y grace à :

Code:

ALTER TABLE my_table ADD COLUMN geom geometry(Point, 2154);
UPDATE my_table SET geom = ST_SetSRID(ST_MakePoint(x, y), 2154);

J'aimerais pouvoir mettre en place un trigger afin que le champ geom se peuple
automatiquement sur ma table dès lors qu'il y ait une nouvelle insertion/mise à jour des champ X/Y.
Si une personne pense pouvoir m'éclairer.

Merci.

Dernière modification par image95 (Wed 16 February 2022 10:25)

Hors ligne

 

#2 Wed 16 February 2022 11:21

JP LLORENS
Participant assidu
Date d'inscription: 12 Nov 2008
Messages: 231

Re: Postgis trigger : peupler auto. champ geom depuis champs X/Y

Bonjour,
Commencer par créer la fonction trigger :

Code:

CREATE OR REPLACE FUNCTION mafonction()
  RETURNS trigger AS
$BODY$DECLARE

-- déclaration des variables éventuelles

BEGIN
    -- test éventuel
    IF xxxx THEN
        NEW.geom = ST_SetSRID(ST_MakePoint(NEW.x, NEW.y), 2154);
    END IF; 
return     NEW;     
END;$BODY$
  LANGUAGE plpgsql VOLATILE SECURITY DEFINER
  COST 100;
ALTER FUNCTION mafonction()
  OWNER TO postgres;

NEW étant l'objet (la ligne) de la table en cours de modification

Puis création du trigger :

Code:

CREATE TRIGGER "montrigger"
  BEFORE INSERT OR UPDATE OF x,y
  ON my_table 
  FOR EACH ROW
  EXECUTE PROCEDURE mafonction();

Cordialement

Hors ligne

 

Pied de page des forums

Powered by FluxBB