Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#1 Tue 05 April 2022 12:50
- Géorom
- Juste Inscrit !
- Date d'inscription: 4 Jan 2013
- Messages: 2
Postgis - Articulation Event Trigger et Trigger
Bonjour à tous,
Je débute avec les triggers et j'avais une question sur les connections avec les event trigger. Mon problème est le suivant. J'ai un trigger qui me permet de mettre à jour certaines colonnes dans des tables. Ces colonnes sont souvent redondantes sur beaucoup de tables et je créé donc le même trigger sur chaque table.
J'aimerai automatiser ça dans la mesure du possible. J'avais dans l'idée de faire un event_trigger qui à chaque création de table me créé ce trigger spécifique. Le problème c'est comment faire pour qu'il me récupère le schéma et le nom de la table créée pour le mettre dans le trigger.
Je sais pas si je suis très clair.
Merci à vous.
Hors ligne
#2 Tue 05 April 2022 13:17
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: Postgis - Articulation Event Trigger et Trigger
Bonjour,
Si le traitement est tjs a peu près le même, faites une fonction trigger générique que vous associez à plusieurs tables.
Vous pouvez savoir grâce aux variables de la fonction trigger sur quelle table/colonne le trigger est en train d'agir, si vous devez faire des opérations spécifiques pour certaines tables.
Nicolas
Hors ligne
#3 Tue 05 April 2022 13:57
- JP LLORENS
- Participant assidu
- Date d'inscription: 12 Nov 2008
- Messages: 231
Re: Postgis - Articulation Event Trigger et Trigger
Pour compléter N. Ribot, la variable TG_TABLE_NAME vous permet de savoir quelle est la table appelant le trigger.
Il suffit donc de faire un test sur cette variable et en fonction du résultat d'adapter les requêtes dans votre trigger :
Code:
IF TG_TABLE_NAME = 'matable' THEN ...; ELSEIF TG_TABLE_NAME ='autretable THEN ...; END IF;
Cordialement
Hors ligne