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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#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