NOTIFY
Уведомление всех серверных процессов, ожидающих некоторого события.
Синтаксис:
NOTIFY событие
Параметры:
Событие, о наступлении которого оповещаются процессы.
Результаты:
NOTIFY. Это сообщение выдается в том случае, если рассылка прошла успешно.
Описание
Команда NOTIFY работает в сочетании с командой LISTEN, описанной выше. Эти две команды обеспечивают простой механизм межпроцессных взаимодействий, который при правильном применении способен принести существенную пользу.
Команда NOTIFY рассылает уведомление о событии с заданным именем; если какая-либо клиентская программа ранее выполнила команду LISTEN с тем же именем события, она получает уведомление.
Примечание
Поведение клиентского процесса после получения уведомления, отправленного командой NOTIFY, полностью зависит от реализации, поэтому процесс может немедленно отреагировать на происходящее, а может ничего не делать.
Уведомление содержит информацию об имени события и идентификаторе серверного процесса, рассылающего уведомления. Проектировщик базы данных определяет имена событий и реакцию на них со стороны базы данных.
Команды NOTIFY и LISTEN чаще всего применяются для оповещения клиентских процессов о модификации таблиц, поэтому имена событий часто совпадают с именами таблиц. Впрочем, это всего лишь распространенный вариант использования этих команд; совпадение имен событий с именами таблиц не обязательно.
Примечание
Автоматическое уведомление об изменениях в таблицах достигается включением команды NOTIFY в правило, срабатывающее при обновлении таблицы.
Транзакции
Следует обратить внимание на особенности выполнения команды NOTIFY в транзакциях. Самая важная особенность заключается в том, что рассылка уведомлений по команде NOTIFY в транзакциях откладывается до момента фиксации. Тем самым предотвращается рассылка уведомлений транзакциями, которые в дальнейшем могут быть откачены.
Также следует учитывать, что серверный процесс не доставляет уведомление подключенному клиенту при наличии незавершенной транзакции. Если в клиентском процессе в настоящее время существует открытая транзакция, серверный процесс отправляет уведомление лишь после того, как транзакция будет завершена командой COMMIT или ROLLBACK.
Повторные сигналы
Поведение пары команд NOTIFY и LISTEN напоминает систему сигналов в Unix. Даже если уведомление рассылается многократно несколькими командами NOTIFY, ожидающие процессы получают его только один раз.
— Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта.
— Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы).
— SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание.
SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение
По этой причине количество принятых уведомлений не может использоваться для накопления значений счетчиков или отслеживания важных событий, происходящих в базе данных. В правильной реализации эти действия выполняются с применением команды NOTIFY с объектом последовательности (или его аналогом).
Пример
В следующем фрагменте первая команда определяет некоторое событие, а вторая команда уведомляет серверный процесс о наступлении этого события:
booktown=# LISTEN publisherjteletion; LISTEN booktown=# NOTIFY publisherjjeletlon; Asynchronous NOTIFY 'publisher_deletion' from backend with pid '16864' received.