Я играл с системой уведомлений PostgreSQL и не могу на всю жизнь выяснить, почему pg_notify (текст, текст) никогда не работает. Эта функция не слишком задокументирована, и я не могу найти много примеров ее использования в дикой природе, поэтому я решил, что никто не возражает, что я спрашиваю здесь.
Выполнение следующих работ точно так, как ожидалось:
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-разрядный"