ALTER SUBSCRIPTION

ALTER SUBSCRIPTION — change the definition of a subscription

Synopsis

ALTER SUBSCRIPTION name CONNECTION 'conninfo'
ALTER SUBSCRIPTION name SET PUBLICATION publication_name [, ...] [ WITH ( set_publication_option [= value] [, ... ] ) ]
ALTER SUBSCRIPTION name REFRESH PUBLICATION [ WITH ( refresh_option [= value] [, ... ] ) ]
ALTER SUBSCRIPTION name ENABLE
ALTER SUBSCRIPTION name DISABLE
ALTER SUBSCRIPTION name SET ( subscription_parameter [= value] [, ... ] )
ALTER SUBSCRIPTION name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
ALTER SUBSCRIPTION name RENAME TO new_name

简介

ALTER SUBSCRIPTION可以更改CREATE SUBSCRIPTION中指定的绝大部分订阅属性。

要使用ALTER SUBSCRIPTION,你必须拥有该订阅。要修改拥有者,你还必须是新拥有角色的一个直接或者间接成员。新拥有者必须是超级用户(当前,所有订阅的拥有者必须都是超级用户,因此实际上拥有者检查将被绕过。但是未来可能会改变这种情况)。

Parameters

name

要修改其属性的订阅的名字。

CONNECTION 'conninfo'

这个子句修改最初由CREATE SUBSCRIPTION设置的连接属性。更多信息请见该命令。

SET PUBLICATION publication_name

更改已订阅的publication的列表。更多信息请见CREATE SUBSCRIPTION。默认情况下,这个命令还将做类似REFRESH PUBLICATION的动作。

set_publication_option为这个操作指定额外的选项。支持的选项是:

refresh (boolean)

当为false时,该命令将不会尝试刷新表信息。那么应该单独执行REFRESH PUBLICATION。默认值是true

此外,REFRESH PUBLICATION中介绍的刷新选项也可以被指定。

REFRESH PUBLICATION

从发布者取回缺失的表信息。这将开启对所订阅的publication中的表的复制,会被复制的表是从上一次调用REFRESH PUBLICATION以来或者从CREATE SUBSCRIPTION以来 增加的表。

refresh_option为刷新操作指定额外的选项。支持的选项是:

copy_data (boolean)

指定一旦复制开始,被订阅的publication中已有的数据是否应该被拷贝。默认是true

ENABLE

启用之前被禁用的订阅,在事务的末尾开始逻辑复制工作者。

DISABLE

禁止运行订阅,在事务的末尾停止逻辑复制工作者。

SET ( subscription_parameter [= value] [, ... ] )

这个子句修改最初由CREATE SUBSCRIPTION设置的参数。更多信息请参考该命令。允许的选项是slot_name以及synchronous_commit

new_owner

该订阅的新拥有者的用户名。

new_name

该订阅的新名字。

示例

把一个订阅所订阅的publication改成insert_only

ALTER SUBSCRIPTION mysub SET PUBLICATION insert_only;

禁用(停止)该订阅:

ALTER SUBSCRIPTION mysub DISABLE;

兼容性

ALTER SUBSCRIPTION是一种PostgreSQL的扩展。

另见

CREATE SUBSCRIPTION, DROP SUBSCRIPTION, CREATE PUBLICATION, ALTER PUBLICATION