ALTER SUBSCRIPTION

ALTER SUBSCRIPTION — 修改订阅的定义

大纲

ALTER SUBSCRIPTION name CONNECTION 'conninfo'
ALTER SUBSCRIPTION name SET PUBLICATION publication_name [, ...] [ WITH ( publication_option [= value] [, ... ] ) ]
ALTER SUBSCRIPTION name ADD PUBLICATION publication_name [, ...] [ WITH ( publication_option [= value] [, ... ] ) ]
ALTER SUBSCRIPTION name DROP PUBLICATION publication_name [, ...] [ WITH ( 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_ROLE | CURRENT_USER | SESSION_USER }
ALTER SUBSCRIPTION name RENAME TO new_name

描述

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

要使用ALTER SUBSCRIPTION,你必须拥有该订阅。要改变所有者, 你也必须是新所有者的直接或间接成员。新所有者必须是超级用户。(目前, 所有的订阅所有者必须是超级用户,所以所有者的检查将在实践中被绕过, 但这可能在未来发生变化。)

刷新发布时,我们会删除不再属于发布的关系,如果存在表同步槽,也会删除表同步槽。必须移除这些插槽,以便释放为远程主机上的订阅分配的资源。如果由于网络故障或其他错误,PostgreSQL无法删除插槽,将报告错误。要在这种情况下继续,用户需要重试该操作,或者取消插槽与订阅的关联并删除订阅,如DROP SUBSCRIPTION中所述。

无法在事务块内执行命令ALTER SUBSCRIPTION ... REFRESH PUBLICATION和带有refresh选项为trueALTER SUBSCRIPTION ... {SET|ADD|DROP} PUBLICATION ...

参数

name

要修改属性的订阅的名称。

CONNECTION 'conninfo'

该子句修改最初由CREATE SUBSCRIPTION设置的连接属性。

SET PUBLICATION publication_name
ADD PUBLICATION publication_name
DROP PUBLICATION publication_name

更改已订阅发布的列表。SET用新列表替换整个发布列表,ADD将其他发布添加到发布列表中,而DROP将发布从发布列表中删除。有关详细信息,请参见CREATE SUBSCRIPTION。默认情况下,此命令的作用类似于REFRESH PUBLICATION

publication_option指定了这个操作的附加选项。 支持的选项是:

refresh (boolean)

如果为false,则该命令将不会尝试刷新表信息。然后应单独执行 REFRESH PUBLICATION。默认值是true

此外,可以指定REFRESH PUBLICATION下描述的选项,以控制隐式刷新操作。

REFRESH PUBLICATION

从发布者获取缺少的表信息。这将开始复制自上次调用REFRESH PUBLICATION 或从CREATE SUBSCRIPTION以来添加到订阅发布中的表。

refresh_option指定了刷新操作的附加选项。 支持的选项有:

copy_data (boolean)

指定在复制启动后是否应复制正在订阅的发布中的现有数据。 默认值是true。(以前订阅的表不会被复制。)

ENABLE

启用先前禁用的订阅,在事务结束时启动逻辑复制工作。

DISABLE

禁用正在运行的订阅,在事务结束时停止逻辑复制工作。

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

该子句修改原先由CREATE SUBSCRIPTION设置的参数。 能够被设置的参数是slot_namesynchronous_commitbinary,和streaming

new_owner

订阅的新所有者的用户名。

new_name

订阅的新名称。

示例

将订阅的发布更改为insert_only

ALTER SUBSCRIPTION mysub SET PUBLICATION insert_only;

禁用(停止)订阅:

ALTER SUBSCRIPTION mysub DISABLE;

兼容性

ALTER SUBSCRIPTIONPostgreSQL 的一个扩展。

又见

CREATE SUBSCRIPTION, DROP SUBSCRIPTION, CREATE PUBLICATION, ALTER PUBLICATION