NOTIFY

Name

NOTIFY — Signals all frontends and backends listening on a class

NOTIFY classname        

Inputs

classname

Table or arbitrary relation class used for notification.

Outputs

NOTIFY

Notification message from backend.

Description

NOTIFY is used to awaken all backends and consequently all frontends that have executed LISTEN on classname. This can be used either within an instance-level rule as part of the action body or from a normal query.

When used from within a normal query, this can be thought of as interprocess communication (IPC). When used from within a rule, this can be thought of as an alerter mechanism.

Notice that the mere fact that a notify has been executed does not imply anything in particular about the state of the class (e.g., that it has been updated), nor does the notification protocol transmit any useful information other than the class name. Therefore, all notify does is indicate that some backend wishes its peers to examine classname in some application-specific way.

In fact, classname need not be the name of an SQL class at all. It is best thought of as a condition name that the application programmer selects.

This event notification is performed through the libpq protocol and frontend application interface. The application program must call the routine PQnotifies in order to find out the name of the class to which a given notification corresponds. If this code is not included in the application, the event notification will be queued and never be processed.

Notes

Usage

-- Configure and execute a listen/notify sequence
-- from psql
postgres=> create table t (i int4);
postgres=> listen t;
LISTEN
postgres=> notify t;
NOTIFY
ASYNC NOTIFY of 't' from backend pid '10949' received

Compatibility

SQL92

There is no NOTIFY statement in SQL92.