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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 09 March 2020 18:01

j0haence
Juste Inscrit !
Lieu: Libreville
Date d'inscription: 18 May 2016
Messages: 6

Trigger Postgres:valeur null à la geom quand la long ou lat est null

Je veux créer un trigger qui permet de modifier les colonnes long et lat si je modifie le champ geom d'un ponctuel. De même si je modifie les colonnes long et lat, mon champ geom suit la modif.

Tout fonctionne sauf lorsque je donne une valeur null à la longitude ou latitude, le champ geom ne prend pas la valeur null.
Voici mon script ci-dessous.

BEGIN

if ((old.long<>new.long) or (old.lat<>new.lat)) then
     
    if ( (new.long is null) or (new.lat is null) ) then
        new.geom := null;
    else
        new.geom = st_geomfromtext('POINT('||new.long||' '||new.lat||')', 3857);
    end if;
elsif (st_astext(old.geom)<>st_astext(new.geom)) then
   
    new.lon = st_x(geom);
    new.lat =st_y(geom);
end if;

RETURN NEW;

END


Est ce que quelqu'un aura un meilleur script pour afficher la valeur NULL lorsqu'une de mes coordonnées est NULL?

Merci!!!

Dernière modification par j0haence (Mon 09 March 2020 18:03)

Hors ligne

 

#2 Tue 10 March 2020 10:00

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: Trigger Postgres:valeur null à la geom quand la long ou lat est null

Bonjour,

Rapidos comme ca, je dirais que le premier if ne doit jamais déclencher en cas de null.

Nicolas

Hors ligne

 

#3 Tue 10 March 2020 10:05

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: Trigger Postgres:valeur null à la geom quand la long ou lat est null

Et si un des champs lat ou long est null, la geom formée avec st_geomFromText sera nulle aussi, donc pas forcément besoin de tester la nullité des champs.

Nico

Hors ligne

 

#4 Wed 11 March 2020 12:14

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1160

Re: Trigger Postgres:valeur null à la geom quand la long ou lat est null

Nicolas Ribot a écrit:

Bonjour,

Rapidos comme ca, je dirais que le premier if ne doit jamais déclencher en cas de null.

Nicolas


Oui sans nul doute, null est absorbant dans pas mal d'opérations,
(les opérations booléennes sont une exception), et évalué comme faux
si il fait l'objet d'une condition comme CASE.

exemple, si new.long vaut null, new.lat vaut 1, et old.long = 1 et old.lat = 2

Code:

    (old.long <> new.long) OR (old.lat <> new.lat)
->
    (old.long <> NULL) OR (old.lat <> 1)
->
    NULL OR TRUE
->
    NULL
->
    False

Dernière modification par tumasgiu (Wed 11 March 2020 12:15)

Hors ligne

 

Pied de page des forums

Powered by FluxBB