LISTEN
LISTEN â ожидаÑÑ ÑведомлениÑ
СинÑакÑиÑ
LISTEN каналÐпиÑание
LISTEN ÑегиÑÑÑиÑÑÐµÑ ÑекÑÑий ÑÐµÐ°Ð½Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ñведомлений ÑеÑез канал Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм именем (канал). ÐÑли ÑекÑÑий ÑÐµÐ°Ð½Ñ Ñже заÑегиÑÑÑиÑован и Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ Ñведомлений ÑеÑез ÑÑÐ¾Ñ ÐºÐ°Ð½Ð°Ð», ниÑего не пÑоиÑÑ
одиÑ.
Ðогда вÑзÑваеÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° NOTIFY (в ÑекÑÑем или дÑÑгом ÑеанÑе, подклÑÑÑнном к Ñой же базе даннÑÑ
), вÑе ÑеанÑÑ, ожидаÑÑие ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ ÑеÑез заданнÑй канал, полÑÑаÑÑ Ñведомление и каждÑй, в ÑÐ²Ð¾Ñ Ð¾ÑеÑедÑ, пеÑедаÑÑ ÐµÐ³Ð¾ подклÑÑÑÐ½Ð½Ð¾Ð¼Ñ ÐºÐ»Ð¸ÐµÐ½ÑÑÐºÐ¾Ð¼Ñ Ð¿ÑиложениÑ.канал
Ð¡ÐµÐ°Ð½Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑказаÑÑÑÑ Ð¾Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ñведомлений ÑеÑез опÑеделÑннÑй канал Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ UNLISTEN. ÐÑоме Ñого, подпиÑка на лÑбÑе ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑки оÑменÑеÑÑÑ Ð¿Ñи завеÑÑении ÑеанÑа.
СпоÑоб полÑÑÐµÐ½Ð¸Ñ Ñведомлений клиенÑÑким пÑиложением опÑеделÑеÑÑÑ Ð¿ÑогÑаммнÑм инÑеÑÑейÑом Postgres Pro, коÑоÑÑй оно иÑполÑзÑеÑ. ÐÑиложение, иÑполÑзÑÑÑее библиоÑÐµÐºÑ libpq, вÑполнÑÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ LISTEN как обÑÑнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SQL, а заÑем оно должно пеÑиодиÑеÑки вÑзÑваÑÑ ÑÑнкÑÐ¸Ñ PQnotifies, ÑÑÐ¾Ð±Ñ Ð¿ÑовеÑиÑÑ, не поÑÑÑпили ли новÑе ÑведомлениÑ. ÐÑÑгие инÑеÑÑейÑÑ, напÑÐ¸Ð¼ÐµÑ libpgtcl, пÑедоÑÑавлÑÑÑ Ð±Ð¾Ð»ÐµÐµ вÑÑокоÑÑовневÑе меÑÐ¾Ð´Ñ Ð´Ð»Ñ Ð¾Ð±ÑабоÑки ÑобÑÑий Ñведомлений; на Ñамом деле Ñ libpgtcl ÑазÑабоÑÑик пÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð°Ð¶Ðµ не должен непоÑÑедÑÑвенно вÑполнÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ LISTEN и UNLISTEN. Ðа дополниÑелÑнÑми подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº докÑменÑаÑии инÑеÑÑейÑа, коÑоÑÑй Ð²Ñ Ð¸ÑполÑзÑеÑе.
РопиÑании NOTIFY иÑполÑзование LISTEN и NOTIFY ÑаÑÑмаÑÑиваеÑÑÑ Ð±Ð¾Ð»ÐµÐµ подÑобно.
ÐаÑамеÑÑÑ
каналÐÐ¼Ñ ÐºÐ°Ð½Ð°Ð»Ð° Ñведомлений (лÑбой иденÑиÑикаÑоÑ).
ÐÑимеÑаниÑ
LISTEN наÑÐ¸Ð½Ð°ÐµÑ Ð´ÐµÐ¹ÑÑвоваÑÑ Ð¿Ñи ÑикÑиÑовании ÑÑанзакÑии. ÐÑли LISTEN или UNLISTEN вÑполнÑеÑÑÑ Ð² ÑÑанзакÑии, коÑоÑÐ°Ñ Ð·Ð°Ñем оÑкаÑÑваеÑÑÑ, ÑоÑÑоÑние подпиÑки ÑÑого ÑеанÑа на ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ менÑеÑÑÑ.
ТÑанзакÑиÑ, в коÑоÑой вÑполнÑеÑÑÑ LISTEN, не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð´Ð³Ð¾Ñовлена Ð´Ð»Ñ Ð´Ð²ÑÑ
Ñазной ÑикÑаÑии.
ÐÑимеÑÑ
ÐемонÑÑÑаÑÐ¸Ñ Ð¿ÑоÑедÑÑÑ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ/полÑÑÐµÐ½Ð¸Ñ ÑÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð² psql:
LISTEN virtual; NOTIFY virtual; Asynchronous notification "virtual" received from server process with PID 8448.
СовмеÑÑимоÑÑÑ
ÐпеÑаÑÐ¾Ñ LISTEN оÑÑÑÑÑÑвÑÐµÑ Ð² ÑÑандаÑÑе SQL.