ALTER PUBLICATION — change the definition of a publication
ALTER PUBLICATIONname
ADD TABLE [ ONLY ]table_name
[ * ] [, ...] ALTER PUBLICATIONname
SET TABLE [ ONLY ]table_name
[ * ] [, ...] ALTER PUBLICATIONname
DROP TABLE [ ONLY ]table_name
[ * ] [, ...] ALTER PUBLICATIONname
SET (publication_parameter
[=value
] [, ... ] ) ALTER PUBLICATIONname
OWNER TO {new_owner
| CURRENT_USER | SESSION_USER } ALTER PUBLICATIONname
RENAME TOnew_name
命令ALTER PUBLICATION
可以更改一个publication的属性。
前三种变体更改哪些表示该publication的组成部分。SET TABLE
子句将用指定的表列表替换publication中的表列表。ADD TABLE
和DROP TABLE
子句将向该publication加入或者从该publication中去除多个表。注意向一个已经被订阅的publication中增加表将要求在订阅端执行一个ALTER SUBSCRIPTION ... REFRESH PUBLICATION
动作以让修改生效。
这个命令的第四种变体可以更改CREATE PUBLICATION中指定的所有的publication属性。没有在命令中提到的属性保持之前的设置。
余下的变体更改该publication的拥有者和名字。
要使用ALTER PUBLICATION
,你必须拥有该publication。要修改拥有者,你还必须是新拥有角色的一个直接或者间接成员。新拥有者必须拥有该数据库上的CREATE
特权。此外, 一个FOR ALL TABLES
的publication的新拥有者必须是超级用户。不过,超级用户可以绕过这些限制更改publication的拥有关系。
name
要被修改定义的现有publication的名称。
table_name
一个已有表的名称。如果在表名前指定ONLY
,则只有那个表受到影响。如果没有指定ONLY
,该表及其所有的后代表(如果有)都会受影响。可以选择在表名的后面指定*
以明确地表示包括后代表。
SET ( publication_parameter
[= value
] [, ... ] )
这个子句修改最初由CREATE PUBLICATION设置的publication参数。更多信息请参考该命令。
new_owner
该publication的新拥有者的用户名。
new_name
该publication的新名称。
更改该publication为仅发布删除和更新:
ALTER PUBLICATION noinsert SET (publish = 'update, delete');
向publication中加入一些表:
ALTER PUBLICATION mypublication ADD TABLE users, departments;
ALTER PUBLICATION
是一种PostgreSQL的扩展。