LISTEN将当前会话注册为通知通道channel的监听器。 如果当前会话已经被注册为该通知通道的监听器,那么什么也不做。
当执行了命令NOTIFY channel 后,不管是此会话还是其它连接到同一数据库的会话,所有正在监听此通知通道的会话都将收到通知, 并且接下来每个会话将通知与其相连的前端应用。
使用UNLISTEN命令可以将一个会话内已注册的通知通道删除。同样, 会话退出时自动删除该会话正在监听的已注册通知通道。
前端应用检测通知事件的方法取决于PostgreSQL应用使用的编程接口。
如果使用基本的libpq库,那么应用将LISTEN当作普通 SQL 命令使用,
而且必须周期地调用PQnotifies
过程来检测是否有通知到达。
其它像libpgtcl接口提供了更高级的控制通知事件的方法;实际上,
使用libpgtcl的应用程序员不应该直接使用LISTEN或UNLISTEN。
请参考你使用的接口的文档获取更多细节。
NOTIFY的手册页包含更广泛的关于LISTEN 和NOTIFY的使用的讨论。