|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre expérimenté
![]() |
Bonjour à tous,
J'ai une table qui contient des rues : - id - nom - geometry (line) Puis une qui contient les noeuds composants cette rue - id - id_street - geometry (point) La géométrie au niveau des rues est là pour améliorer la performances des select (plutôt que faire une jointure sur les noeuds et reconstruire la géométrie lors du select) Désormais, je dois faire un trigger qui va mettre à jour la géométrie de la rue lorsque l'on "touche" à l'un de ses noeuds, afin d'assurer la cohérence des données. Comment puis-je faire ça ? J'ai vu quelques exemple mais c'est toujours lorsqu'un champ d'une même table doit être mis à jour lorsque la ligne est à jour, donc facile.. Merci à vous, A bientôt |
|
|
00
|
|
|
#2 |
![]() ![]() |
Comment as-tu rempli la colonne rue.gometry ?
Ne connaissant pas (encore) les fonctions géométriques de Postgresql et/ou Postgis, je suppose qu'il s'agit d'une fonction qui construit la ligne de la rue à partir de ses points ? Tu devrais donc pouvoir utiliser cette fonction dans une requête UPDATE.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#3 | ||
|
Membre expérimenté
![]() |
Bon.. j'ai réfléchit un peu (même si j'aurai mieux fait de le faire avant de créer ce sujet, désolé), et toute ma confusion réside en ces questions :
Que vaut le "old.id" dans le cas d'un BEFORE INSERT ? Que vaut le "new.id" dans le cas d'un AFTER DELETE Car je veux faire un trigger qui utilise soit le new.id, soit le old.id, déclenché par les évenements AFTER INSERT et AFTER DELETE mais je ne sais pas ce qui se passe si j'utilise le "old.id" sur un AFTER INSERT et le old.id sur un AFTER DELETE.. C'est pour éviter de faire 4 triggers.. Même si ça ne t'aideras pas à me répondre, comme tu m'as posé la question, pour construire la géométrie d'une rue en fonction des points, je fais : Code :
|
||
|
|
00
|
|
|
#4 | |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Citation:
Mais en revanche on peut utiliser la variable TG_OP pour savoir dans le trigger s'il a été appelé pour un INSERT ou un DELETE, voir la doc à ce sujet. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com