Я играл с системой уведомлений PostgreSQL и не могу понять, почему pg_notify (text, text) никогда не работает. Эта функция не слишком документирована, и я не могу найти много примеров ее использования в дикой природе, поэтому я подумал, что никто не будет против, если я задам этот вопрос.
Запуск следующих работает точно так, как ожидалось:
LISTEN my_channel;
NOTIFY my_channel, 'my message text';
Однако использование функции pg_notify () возвращает нулевое значение, и уведомление никогда не отправляется. Ошибок тоже не дано. Пример использования:
SELECT pg_notify('my_channel', 'my message text');
Я мог бы использовать функцию NOTIFY, но моя цель - упростить уведомление в запросе так:
select pg_notify(get_player_error_channel(username)::TEXT, 'test'::TEXT)
from player;
Полагаю, мне не хватает чего-то нелепого, но мне не повезло, выясняя причину этого. Страницу, где обсуждается NOTIFY, можно найти здесь: http://www.postgresql.org/docs/9.0/static/sql-notify.html
В ней упоминается о pg_notify (), что заставляет меня предположить, что ничего радикально не будет.
pg_notify
Для отправки уведомления вы также можете использовать функцию pg_notify (текст, текст). Функция принимает имя канала в качестве первого аргумента и полезную нагрузку в качестве второго. Эта функция намного проще в использовании, чем команда NOTIFY, если вам нужно работать с непостоянными именами каналов и полезными нагрузками.
Спасибо как всегда за помощь
Редактировать: Версия базы данных:
«PostgreSQL 9.0.3 на i686-pc-linux-gnu, скомпилированный GCC gcc (GCC) 4.2.4, 32-bit»