Pages: 1
- Sujet précédent - Trigger Postgres:valeur null à la geom quand la long ou lat est null - Sujet suivant
#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
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
Pages: 1
- Sujet précédent - Trigger Postgres:valeur null à la geom quand la long ou lat est null - Sujet suivant