ALTER PUBLICATION
ALTER PUBLICATION — 修改发布的定义
大纲
ALTER PUBLICATIONnameADD TABLE [ ONLY ]table_name[ * ] [, ...] ALTER PUBLICATIONnameSET TABLE [ ONLY ]table_name[ * ] [, ...] ALTER PUBLICATIONnameDROP TABLE [ ONLY ]table_name[ * ] [, ...] ALTER PUBLICATIONnameSET (publication_parameter[=value] [, ... ] ) ALTER PUBLICATIONnameOWNER TO {new_owner| CURRENT_USER | SESSION_USER } ALTER PUBLICATIONnameRENAME TOnew_name
描述
ALTER PUBLICATION 命令可更改发布的属性。
前三种形式会更改哪些表属于该发布。SET TABLE 子句会用指定列表替换发布中的表列表。ADD TABLE 和 DROP TABLE 子句会向发布添加或从发布移除一个或多个表。请注意,向已被订阅的发布添加表,需要在订阅端执行 ALTER SUBSCRIPTION ... REFRESH PUBLICATION 操作后才会生效。
概要中列出的此命令的第四种形式可以更改 CREATE PUBLICATION 中指定的所有发布属性。命令中未提及的属性保留其以前的设置。
其余几种形式用于更改发布的所有者和名称。
要使用 ALTER PUBLICATION,必须拥有该发布。向发布添加表还要求拥有该表。要更改所有者,还必须是新所有者角色的直接或间接成员。新所有者必须在数据库上拥有 CREATE 权限。此外,FOR ALL TABLES 发布的新所有者必须是超级用户。不过,超级用户无论这些限制如何都可以更改发布的所有权。
参数
name要更改其定义的现有发布的名称。
table_name现有表的名称。如果在表名之前指定
ONLY,则只影响该表。如果未指定ONLY,则影响该表及其所有后代表(如果有)。也可以在表名后指定*,以明确表示包含后代表。SET (publication_parameter[=value] [, ... ] )此子句更改最初由 CREATE PUBLICATION 设置的发布参数。详情请参见该命令。
new_owner新发布所有者的用户名。
new_name发布的新名称。
示例
将发布更改为只发布删除和更新操作:
ALTER PUBLICATION noinsert SET (publish = 'update, delete');
向发布添加一些表:
ALTER PUBLICATION mypublication ADD TABLE users, departments;
兼容性
ALTER PUBLICATION 是 PostgreSQL 的一个扩展。