LISTEN

Nom

LISTEN — attend une notification sur une condition de notification
LISTEN name
  

Entrées

name

nom d'une condition de notification.

Sorties

LISTEN

message retourné si succés de l'enregistrement

NOTICE Async_Listen: We are already listening on name

si le serveur a déja enregistré cette condition de notification.

Description

LISTEN enregistre le serveur Postgres courant comme étant en attente sur la condition de notification name.

Chaque fois que la commande NOTIFY name est invoquée, ou par ce serveur ou un autre connecté à la même base, tous les serveurs qui attendent sur cette condition de notification sont notifiés, et chacun renverra sa notification à son aaplication cliente connectée. Voir NOTIFY pour plus d'information.

Un serveur peut être désenregistré pour une condition de notification donnée avec la commande UNLISTEN. Ainsi, les enregistrements en attente d'un serveur sont automatiquement rafraîchis quand le processus serveur existe.

La méthode qu'une application cliente doit utiliser pour détecter les événements de notification dépend de l'interface de programmation de l'application Postgres utilisée. Avec la librairie de base libpq, les sorties application LISTEN comme une commande ordinaire SQL, et doivent périodiquement appeler la routine PQnotifies pour savoir si certains événements de notification ont été reçus. D'autres interfaces comme libpgtcl procurent des méthodes de haut niveau pour manier les événements de notification; bien sûr, avec libpgtcl le programmeur n'aurait pas les commandes LISTEN ou UNLISTEN directement.

La page de référence pour NOTIFY contient plus de détails sur l'usage de LISTEN et NOTIFY.

Notes

name peut être n'importe quelle chaîne valide comme un nom; il n'a pas besoin de correspondre au nom d'une table. Si notifyname est entre doubles guillemets, il ne nécessite même pas d'être un nom valide syntaxiquement, mais peut être n'importe quelle chaîne de plus de 31 caractères de long.

Dans certaines versions antérieures de Postgres, name doit être entouré de doubles guillemets quand il ne correspond pas à un nom de table existant, même s'il est syntaxiquement valable comme nom.

Utilisation

Configure et exécute une séquence listen/notify depuis psql:
LISTEN virtual;
NOTIFY virtual;

ASYNC NOTIFY of 'virtual' from backend pid '11239' received
   

Compatibilité

SQL92

Il n'y a pas de LISTEN en SQL92.