Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
je suis nouveau à psql.
Je veux créer un trigger qui envoie une notification après un insert ou un update.
Créer le trigger, pas de souci, il me crée une fonction.
Lorsque je veux coder en plpgsql:
DECLARE
CURSCHEMA VARCHAR (10);
BEGIN
SELECT current_schema() into CURSCHEMA;
NOTIFY CURSCHEMA||'_GIService', '-';
RETURN NEW;
END
Il me donne une erreur au ||. Quel est le souci?
Merci.
Hors ligne
Déjà, il serait sympa de donner le message d'erreur, histoire qu'on n'ait pas à le deviner
Ensuite, il vous faut utiliser une requête dynamique (http://docs.postgresql.fr/9.6/plpgsql-statements.html).
Guillaume.
Hors ligne
Comme alternative au SQL dynamique, il est aussi possible d'utiliser la fonction pg_notify().
D'après la doc:
pg_notify
Pour envoyer une notification, vous pouvez aussi utiliser la fonction pg_notify(text, text). La fonction prend en premier argument le nom du canal et en second la charge. La fonction est bien plus simple à utiliser que la commande NOTIFY si vous avez besoin de travailler avec des noms de canaux et des charges non constants.
D'ailleurs pas besoin de mettre current_schema() dans une variable en plpgsql, mais en revanche il faudra utiliser PERFORM en procédural plutôt que SELECT puisque cette fonction ne renvoie rien.
BEGIN
PERFORM pg_notify(current_schema() || '_GIService', '-');
RETURN NEW;
END
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne
Pages : 1