Начало работы
Подключение
Тесты производительности
Развёртывание
Использование данных
Загрузка данных
Миграция данных
Запрос данных
Управление кластерами
Обновление
Глобальное обслуживание
Масштабирование
Мониторинг
Безопасность
Лучшие практики
Технические принципы
Типы данных
Хранилище
Исполняющий движок
Потоковая обработка (Domino)
MARS3 Индексы
Расширения
Расширенные функции
Расширенный запрос
Федеративные запросы
Grafana
Резервное копирование и восстановление
Аварийное восстановление
Руководство
Настройка производительности
Устранение неполадок
Инструменты
Параметры конфигурации
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.