LISTEN

Nombre

LISTEN  --  Recibir aviso de la notificación de una condición

Synopsis

LISTEN nombre
  

Entradas

nombre

Nombre de la condición de notificación.

Salidas

LISTEN

Mensaje devuelto cuando se completa exitosamente el registro.

NOTICE Async_Listen: We are already listening on nombre

Si este backend ya fue registrado para ser avisado cuando se notifica esa condición.

Descripción

LISTEN registra al backend Postgres para recibir aviso de la notificación de una condición nombre.

Cada vez que el comando NOTIFY nombre es invocado, ya sea por este backend u otro conectado a la misma base de datos, todos los backends que están registrados para ser avisados de la notificación de esa condición, reciben el aviso, y en su momento cada uno de ellos notificará a su aplicación frontend. Véase el tratamiento de NOTIFY para mayor información.

Un backend puede anular su registro de recepción de aviso de una condición de notificación dada a través del comando UNLISTEN. Asimismo, todos los registros de recepción de avisos se anulan automáticamente cuando finaliza el proceso backend.

El método mediante el cual la aplicación frontend detecta los eventos de notificación depende de la interfaz de programación de aplicaciones Postgres utilizada. Con la librería básica libpq, la aplicación envía LISTEN como un comando SQL ordinario, y entonces llama periódicamente a la rutina PQnotifies para averiguar si se ha recibido algún evento de notificación. Otras interfaces como libpgtcl proporcionan métodos de alto nivel para el manejo de eventos de notificación; de hecho, con libpgtcl el programador de aplicaciones no debe enviar LISTEN o UNLISTEN directamente. Véase la documentación de la librería utilizada para mayores detalles.

NOTIFY contiene un tratamiento más extenso de la utilización de LISTEN y NOTIFY.

Notas

nombre puede ser cualquier cadena válida como nombre; no es necesario que sea igual al nombre de una tabla existente. Si nombre se encierra entre comillas, ni siquiera es necesario que sea un nombre válido, sino cualquier cadena de hasta 31 caracteres de largo.

En algunas versiones previas de Postgres, nombre debía ser encerrado entre comillas cuando no se correspondía con el nombre de una tabla existente, aunque fuera sintácticamente correcto como nombre. Actualmente no es requerido.

Uso

Configura y ejecuta una secuencia recepción de aviso/notificación desde psql:

LISTEN virtual;
NOTIFY virtual;

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

Compatibilidad

SQL92

El comando LISTEN no existe en SQL92.