DROP SUBSCRIPTION

DROP SUBSCRIPTION — 删除一个订阅

Synopsis

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扩展。

另见

CREATE SUBSCRIPTION, ALTER SUBSCRIPTION