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 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: 1534

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: 1534

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: 1129

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