Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Зеркалирование
Управление ресурсами
Безопасность
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Потоковая передача
Восстановление после сбоев
Конфигурация
Индексы
Расширения
Справочник по SQL
Часто задаваемые вопросы
Ожидает уведомление.
LISTEN <channel>
LISTEN регистрирует текущую сессию в качестве слушателя канала уведомлений с именем channel. Если текущая сессия уже зарегистрирована как слушатель данного канала, никаких действий не выполняется.
Каждый раз, когда выполняется команда NOTIFY <channel>, независимо от того, была ли она вызвана в этой сессии или в другой, подключённой к той же базе данных, все сессии, прослушивающие данный канал уведомлений, получают уведомление, каждая из которых, в свою очередь, информирует соответствующее клиентское приложение.
Отменить регистрацию сессии для указанного канала уведомлений можно с помощью команды UNLISTEN. Регистрации прослушивания сессии автоматически очищаются при завершении сессии.
Метод, который клиентское приложение должно использовать для обнаружения событий уведомления, зависит от применяемого интерфейса программирования приложений PostgreSQL. При использовании библиотеки libpq приложение отправляет LISTEN как обычную SQL-команду, а затем периодически вызывает функцию PQnotifies(), чтобы определить, были ли получены какие-либо события уведомления. Другие интерфейсы, такие как libpgtcl, предоставляют более высокоуровневые методы обработки событий уведомлений; на самом деле, при использовании libpgtcl разработчику приложения вообще не нужно напрямую выполнять команды LISTEN или UNLISTEN. Подробности см. в документации по используемому интерфейсу.
NOTIFY содержит более подробное описание использования LISTEN и NOTIFY.
LISTEN вступает в силу при фиксации транзакции. Если LISTEN или UNLISTEN выполняется внутри транзакции, которая впоследствии откатывается, набор каналов уведомлений, на которые осуществляется прослушивание, остаётся без изменений.
Транзакция, в которой была выполнена команда LISTEN, не может быть подготовлена для двухфазной фиксации.
Настройка и выполнение последовательности listen/notify из psql:
LISTEN virtual;
NOTIFY virtual;
Asynchronous notification "virtual" received from server process with PID 8448.
В стандарте SQL нет оператора LISTEN.