pg_listen 创建,修改或取消一个对来自 Postgres 后端的异步 NOTIFY 消息请求的侦听. 带有 callbackCommand 参数时,建立请求或者已经存在的命令字串被代替. 不带 callbackCommand 参数时,取消前面一个请求.
在一个 pg_listen 请求建立起来后, 当一个与给定名称匹配的 NOTIFY 消息从后端到达后就执行声明的命令字串. 当任何 Postgres 客户应用发送一个引用该名称的 NOTIFY 消息后都会发生这个过程. (注意这个名字可以是,但又不必须是一个数据库里现存的关系.) 命令行字串是从 Tcl 空闲循环运行的.那也是用 Tk 写的应用的正常的空闲状态. 在非 Tk 的 Tcl 脚本里,你可以执行 update 或 vwait 来促使进入空闲循环.
你在使用 pg_listen 时不应该直接调用 SQL 语句 LISTEN 或 UNLISTEN.Pgtcl 替你使用那些语句. 但是如果你想自己发送一个 NOTIFY 消息,用 pg_exec 调用 SQL NOTIFY 语句.