DROP SUBSCRIPTION — 删除一个订阅
DROP SUBSCRIPTION [ IF EXISTS ] name
[ CASCADE | RESTRICT ]
DROP SUBSCRIPTION
从数据库集群中删除一个订阅。
订阅只能由超级用户删除。
如果订阅与一个复制槽(可以用ALTER SUBSCRIPTION
重置该复制槽)相关联,则DROP SUBSCRIPTION
不能在事务块内执行。
name
要删除的订阅。
CASCADE
RESTRICT
这些关键词没有任何效果,因为没有对于订阅的依赖。
在删除一个与远程主机上的复制槽相关联的订阅时(普通状态),DROP SUBSCRIPTION
将连接到该远程主机并且尝试把删除该复制槽当作其操作的一部分。这是必要的,这样远程主机上为该订阅分配的资源才会被释放。如果这一步失败(因为远程主机不可达或者因为远程复制槽不能被删除、不存在或者从来就没有存在过),DROP SUBSCRIPTION
命令将会失败。为了在这种情况下继续这一操作,应该通过执行ALTER SUBSCRIPTION ... SET (slot_name = NONE)
将该订阅与复制槽解除关联。之后,DROP SUBSCRIPTION
将不再尝试在远程主机上做任何动作。注意如果远程复制槽仍然存在,应该接着手工删除它,否则它将会继续保留WAL并且可能最终导致磁盘被充满。还可以参考Section 31.2.1。
如果一个订阅与一个复制槽相关联,则DROP
SUBSCRIPTION
不能在事务块内执行。
删除一个订阅:
DROP SUBSCRIPTION mysub;
DROP SUBSCRIPTION
是一种PostgreSQL扩展。