受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

DROP SUBSCRIPTION

DROP SUBSCRIPTION — 移除一个订阅

Synopsis

DROP SUBSCRIPTION [ IF EXISTS ] name [ CASCADE | RESTRICT ]

描述

DROP SUBSCRIPTION从数据库集簇中移除一个订阅。

要执行此命令,用户必须是该订阅的拥有者。

如果该订阅与复制槽相关联,则不能在事务块内执行 DROP SUBSCRIPTION。 (可以使用ALTER SUBSCRIPTION 来取消设置该槽。)

参数

name

要移除的订阅名称。

CASCADE
RESTRICT

这些关键字没有任何效果,因为订阅上不存在依赖关系。

注解

删除一个与远端主机上的复制槽相关联的订阅时(这通常是正常状态), DROP SUBSCRIPTION会连接到远端主机,并在执行过程中尝试删除该复制槽 (以及任何剩余的表同步槽)。这样做是必要的,以便释放远端主机上 为该订阅分配的资源。如果此操作失败,无论是因为远端主机不可达,还是因为远端复制槽 无法删除、不存在或者从未存在,DROP SUBSCRIPTION命令都会失败。 要在这种情况下继续,首先执行 ALTER SUBSCRIPTION ... DISABLE 禁用订阅,然后执行 ALTER SUBSCRIPTION ... SET (slot_name = NONE) 将其与复制槽解除关联。此后,DROP SUBSCRIPTION将不再尝试对远端主机 执行任何操作。注意,如果远端复制槽仍然存在,则应当手工删除它(以及任何相关的表同步槽); 否则,它们会继续保留 WAL, 并最终可能导致磁盘被占满。另见Section 29.2.1

如果订阅与复制槽相关联,则不能在事务块内执行 DROP SUBSCRIPTION

示例

删除一个订阅:

DROP SUBSCRIPTION mysub;

兼容性

DROP SUBSCRIPTIONPostgreSQL扩展。

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。