ALTER PUBLICATION — 修改发布的定义
ALTER PUBLICATIONnameADDpublication_object[, ...] ALTER PUBLICATIONnameSETpublication_object[, ...] ALTER PUBLICATIONnameDROPpublication_object[, ...] ALTER PUBLICATIONnameSET (publication_parameter[=value] [, ... ] ) ALTER PUBLICATIONnameOWNER TO {new_owner| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER PUBLICATIONnameRENAME TOnew_namewherepublication_objectis one of: TABLE [ ONLY ]table_name[ * ] [ (column_name[, ... ] ) ] [ WHERE (expression) ] [, ... ] TABLES IN SCHEMA {schema_name| CURRENT_SCHEMA } [, ... ]
命令ALTER PUBLICATION可以更改发布的属性。
前三种变体更改了哪些表/模式是发布的一部分。
SET子句将用指定的列表替换发布中的表/模式列表;
发布中现有的表/模式将被移除。
ADD和DROP子句将分别添加和移除
发布中的一个或多个表/模式。请注意,向已经被订阅的发布中添加表/模式
需要在订阅端执行ALTER SUBSCRIPTION ... REFRESH PUBLICATION
操作才能生效。另外请注意,DROP TABLES IN SCHEMA不会
删除通过
FOR TABLE/
ADD TABLE指定的任何模式表,并且DROP与
WHERE子句的组合是不允许的。
第四条语句可以改变在CREATE PUBLICATION中指定的所有发布属性。 该命令中未提及的属性保留其先前的设置。
其余语句更改所有者和发布的名称。
您必须拥有该发布才能使用ALTER PUBLICATION。
将表添加到发布中还需要拥有该表。
ADD TABLES IN SCHEMA和
SET TABLES IN SCHEMA到发布中要求调用用户是超级用户。
要更改所有者,您必须能够SET ROLE为新的所有者角色,
并且该角色必须在数据库中具有CREATE权限。
此外,新的所有者必须是
FOR ALL TABLES
或FOR TABLES IN SCHEMA
发布的超级用户。然而,超级用户可以不受这些限制地更改发布的所有权。
当publication还发布带有列表的表时,不支持添加/设置任何模式,反之亦然。
name要修改定义的现有发布的名称。
table_name
现有表的名称。如果在表名之前指定了ONLY,则只有该表受到影响。
如果没有指定ONLY,则该表及其所有后代表(如果有的话)都会受到影响。
可选地,可以在表名之后指定*以明确指示包含后代表。
可选地,可以指定列列表。有关详细信息,请参见CREATE PUBLICATION。 请注意,不支持在具有不同列列表的多个发布中发布相同表的情况。有关更改列列表时可能出现的问题的详细信息,请参见警告:合并来自多个publication的列列表。
如果指定了可选的WHERE子句,则expression
评估为false或null的行将不会被发布。请注意,表达式周围需要括号。
使用用于复制连接的角色评估expression。
schema_name现有模式的名称。
SET ( publication_parameter [= value] [, ... ] )该子句修改最初由CREATE PUBLICATION设置的发布参数。
new_owner发布的新所有者的用户名。
new_name发布的新名称。
将发布修改为只发布删除和更新: Change the publication to publish only deletes and updates:
ALTER PUBLICATION noinsert SET (publish = 'update, delete');
向publication添加一些表格:
ALTER PUBLICATION mypublication ADD TABLE users (user_id, firstname), departments;
更改表格的发布列集合:
ALTER PUBLICATION mypublication SET TABLE users (user_id, firstname, lastname), TABLE departments;
将模式marketing和sales添加到publicationsales_publication中:
ALTER PUBLICATION sales_publication ADD TABLES IN SCHEMA marketing, sales;
将表users、departments和模式
production添加到publication
production_publication中:
ALTER PUBLICATION production_publication ADD TABLE users, departments, TABLES IN SCHEMA production;
ALTER PUBLICATION是PostgreSQL的一个扩展。