PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 10/11/2016 15:00:35

albourg
Membre

trigger et notify

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

#2 10/11/2016 15:03:42

gleu
Administrateur

Re : trigger et notify

Déjà, il serait sympa de donner le message d'erreur, histoire qu'on n'ait pas à le deviner smile

Ensuite, il vous faut utiliser une requête dynamique (http://docs.postgresql.fr/9.6/plpgsql-statements.html).

Hors ligne

#3 11/11/2016 00:58:17

dverite
Membre

Re : trigger et notify

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

Hors ligne

Pied de page des forums