×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

6.1.151. LISTEN

6.1.151. LISTEN

LISTEN — ожидание уведомления

Синтаксис

LISTEN канал

Описание

LISTEN регистрирует текущий сеанс в качестве слушателя канала уведомлений с именем канал. Если текущий сеанс уже зарегистрирован в качестве слушателя этого канала уведомлений, никаких действий не предпринимается.

При каждом вызове команды NOTIFY канал , выполненном в данном сеансе или в другом сеансе, подключенном к той же базе данных, все сеансы, прослушивающие этот канал уведомлений, получают уведомление, и каждый из них, в свою очередь, уведомляет свое клиентское приложение.

Отменить регистрацию сеанса для определенного канала уведомлений можно с помощью команды UNLISTEN command. Регистрации прослушивания автоматически аннулируются при завершении сеанса.

Метод, используемый клиентским приложением для обнаружения событий уведомления, зависит от того, какой Digital Q.DataBase интерфейс программирования приложений оно использует. При использовании libpq библиотеке, приложение выполняет LISTEN как обычную SQL-команду, а затем должно периодически вызывать функцию PQnotifies , чтобы выяснить, были ли получены какие-либо события уведомлений. Другие интерфейсы, такие как libpgtcl предоставляют высокоуровневые методы для обработки событий уведомлений; более того, при использовании libpgtcl разработчику приложений не следует даже выполнять LISTEN или UNLISTEN напрямую. Для получения дополнительных сведений см. документацию по используемому интерфейсу.

Параметры

канал

Имя канала уведомлений (любой идентификатор).

Примечания

LISTEN вступает в силу в момент фиксации (транзакции). Если LISTEN или UNLISTEN выполняется в рамках транзакции, которая впоследствии откатывается, набор прослушиваемых каналов уведомлений не меняется.

Транзакция, в которой была выполнена команда LISTEN не может быть подготовлен для двухфазной фиксации.

При первоначальной настройке прослушивающего сеанса возникает состояние гонки: если параллельно фиксируемые транзакции отправляют события уведомления, какие именно из них получит новый сеанс? Ответ таков: сеанс получит все события, зафиксированные после определенного момента в процессе фиксации транзакции. Однако этот момент наступает несколько позже любого состояния базы данных, которое транзакция могла наблюдать в запросах. Это приводит к следующему правилу использования LISTEN: сначала выполните (и зафиксируйте!) эту команду, затем в новой транзакции проверьте состояние базы данных в соответствии с логикой приложения, после чего полагайтесь на уведомления для отслеживания последующих изменений состояния базы данных. Первые несколько полученных уведомлений могут относиться к обновлениям, уже обнаруженным при первоначальной проверке базы данных, но обычно это не имеет негативных последствий.

NOTIFY содержит более подробное описание использования LISTEN и NOTIFY.

Примеры

Настройка и выполнение последовательности listen/notify в psql:

LISTEN virtual;
NOTIFY virtual;
Асинхронное уведомление «virtual» получено от серверного процесса с PID 8448.

Совместимость

В стандарте SQL LISTEN оператора в стандарте SQL.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению