Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 10/09/2012 12:37:12
- laurentalpha
- Membre
[RESOLU] triggers chainés plsql / plsh
Bonjour,
Sur INSERT et UPDATE, je dois lancer un certain nombre de commandes shell. Pas de souci pour l'utilisation de plsh. Cependant, pour ces traitements, je dois récupérer des informations qui se trouvent dans d'autres tables que celle ayant déclenchée le trigger. Vous l'aurez compris, je pourrais lancer une requête psql dans la fonction plsh pour récupérer les informations manquantes, mais je trouve cette solution peu élégante (descendre de postgre au niveau shell pour remonter chercher des informations...), et puis j'aime bien savoir ce qui est possible ou non, découvrant postgresql.
Mon idée est de créer un 1er trigger plsql sur les mêmes évènements de la table, qui sera appelé avant le trigger en plsh (ordre alphabétique). La documentation indique que dans ce cas les entrées/sorties entre triggers sont chainées. Le problème est qu'une fonction trigger doit retourner un type TRIGGER. Comment retourner des champs d'une autre table ou mieux, une liste de champs provenant de plusieurs tables ?
Voici, dans l'idée, ce que j'aimerais pouvoir faire :
CREATE OR REPLACE FUNCTION fct_get_additionals_infos() RETURNS RECORD AS $$
BEGIN
RETURN SELECT * FROM radreply WHERE radreply.username = NEW.username AND radreply.attribute = 'Framed-IP-Address';
END;
$$ LANGUAGE plpgsql;
Merci pour vos éclairages !
Dernière modification par laurentalpha (10/09/2012 13:13:35)
Hors ligne
#2 10/09/2012 13:07:45
- rjuju
- Administrateur
Re : [RESOLU] triggers chainés plsql / plsh
Bonjour,
pourquoi ne pas faire cette requête dans un trigger pl/pgsql, et appeler depuis celui-ci une fonction pl/sh avec comme paramètres les champs voulus ?
Julien.
https://rjuju.github.io/
Hors ligne
#3 10/09/2012 13:12:17
- laurentalpha
- Membre
Re : [RESOLU] triggers chainés plsql / plsh
Julien,
Effectivement, j'avais oublié la solution la plus simple !
Merci !
Hors ligne
Pages : 1