LISTEN

Name

LISTEN  --  escuta uma notificação

Synopsis

LISTEN nome
  

Entradas

nome

O nome da condição de notificação.

Saída

LISTEN

Mensagem retornada se a notificação for registrada com sucesso.

NOTICE Async_Listen: We are already listening on nome

Este processo servidor já está registrado para esta condição de notificação.

Descrição

O comando LISTEN registra o processo servidor corrente do PostgreSQL para escutar a condição de notificação nome.

Sempre que o comando NOTIFY nome é executado, tanto por este processo servidor quanto por qualquer outro conectado ao mesmo banco de dados, todos os processos servidores escutando esta condição de notificação neste instante são notificados, e cada um por sua vez notifica o aplicativo cliente ao qual está conectado. Consulte a discussão do comando NOTIFY para obter mais informações.

Um processo servidor pode cancelar seu registro para uma dada condição de notificação usando o comando UNLISTEN. Os registros de escuta de um processo servidor são automaticamente removidos quando o processo servidor encerra sua execução.

O método que o aplicativo cliente deve usar para detectar eventos de notificação depende da interface de programação de aplicativos (API) do PostgreSQL sendo usada. Usando a biblioteca libpq básica, o aplicativo executa o comando LISTEN como um comando SQL comum e depois passa a chamar periodicamente a rotina PQnotifies para descobrir se algum evento de notificação foi recebido. Outras interfaces, como a libpgtcl, fornecem métodos de nível mais alto para tratar os eventos de notificação; na verdade, usando a libpgtcl o programador do aplicativo não precisa nem executar o comando LISTEN ou UNLISTEN diretamente. Consulte a documentação da biblioteca sendo usada para obter mais detalhes.

O comando NOTIFY contém uma discussão mais extensa da utilização do comando LISTEN e do comando NOTIFY.

Notas

nome pode ser qualquer cadeia de caracteres válida como um nome; não precisa corresponder ao nome de qualquer tabela existente. Se nome_notificação estiver entre aspas ("), não é necessário nem que seja um nome com uma sintaxe válida; pode ser qualquer cadeia de caracteres com até 31 caracteres.

Em algumas versões anteriores do PostgreSQL, o nome tinha que vir entre aspas quando não correspondia a nenhum nome de tabela existente, mesmo que sintaticamente fosse um nome válido, mas não é mais necessário.

Utilização

Configurar e executar a seqüência escutar/notificar usando o psql:

LISTEN virtual;
NOTIFY virtual;

Asynchronous NOTIFY 'virtual' from backend with pid '8448' received.

Compatibilidade

SQL92

Não existe o comando LISTEN no SQL92.