| Documentation PostgreSQL 7.2 | ||
|---|---|---|
| <<< Previous | Next >>> | |
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 application 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, l'application sort LISTEN comme une commande SQL ordinaire, 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.
NOTIFY contient d'avantage de détails sur l'usage de LISTEN et NOTIFY.
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 a été entouré de doubles guillemets quand il ne correspond pas à un nom de table existant, même s'il est syntaxiquement valable comme nom.
Configure et exécute une séquence listen/notify depuis psql:
LISTEN virtual; NOTIFY virtual; Asynchronous NOTIFY 'virtual' from backend with pid '8448' received. |
| <<< Previous | Home | Next >>> |
| INSERT | Up | LOAD |