DROP SUBSCRIPTION — 删除一个订阅
DROP SUBSCRIPTION [ IF EXISTS ] name [ CASCADE | RESTRICT ]
DROP SUBSCRIPTION 从数据库集群中删除一个订阅。
要执行此命令,用户必须是该订阅的所有者。
如果订阅与一个复制槽相关联,则 DROP SUBSCRIPTION 不能在事务块内执行。(可以使用 ALTER SUBSCRIPTION 来取消该槽的关联。)
IF EXISTS如果该订阅不存在,则不抛出错误,此时会发出一个提示。
name要删除的订阅的名称。
CASCADERESTRICT这些关键字没有任何作用,因为不存在对订阅的依赖。
当删除与远程主机上的复制槽相关联的订阅(这是正常状态)时,DROP SUBSCRIPTION 会连接到远程主机,并作为其操作的一部分尝试删除该复制槽(以及任何剩余的表同步槽)。这样做是必要的,以便释放在远程主机上为该订阅分配的资源。如果这一步失败,无论是由于无法连接到远程主机,还是由于远程复制槽无法被删除、不存在或从未存在过,DROP SUBSCRIPTION 命令都会失败。在这种情况下,若要继续操作,请先执行 ALTER SUBSCRIPTION ... DISABLE 禁用该订阅,然后执行 ALTER SUBSCRIPTION ... SET (slot_name = NONE) 将其与复制槽解除关联。此后,DROP SUBSCRIPTION 将不再尝试删除订阅自己的复制槽。如果某些表同步尚未完成,它仍可能连接到发布者以删除内部创建的表同步槽;如果发布者不可达,那么这些槽(以及主槽,如果它仍然存在)必须被手工删除。否则它/它们将继续占用 WAL,并可能最终导致磁盘被填满。另请参见 Section 29.2.1。
如果订阅与一个复制槽相关联,则 DROP SUBSCRIPTION 不能在事务块内执行。
Drop a subscription:
DROP SUBSCRIPTION mysub;
DROP SUBSCRIPTION 是 PostgreSQL 的扩展。