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 发布的新所有者必须是超级用户。但是,超级用户可以更改发布的所有权,而无需考虑这些限制。
当发布也发布带有列列表的表时,不支持添加/设置任何模式,反之亦然。
name要更改其定义的现有发布的名称。
table_name现有表的名称。如果在表名前指定了 ONLY,则仅影响该表。如果未指定 ONLY,则影响该表及其所有后代表(如果有)。还可以选择在表名后指定 *,以明确表示包括后代表。
还可以选择指定列列表。有关详细信息,请参阅 CREATE PUBLICATION。请注意,不支持订阅中包含多个发布,且同一表在这些发布中已发布不同列列表的情况。有关更改列列表时可能出现的问题的详细信息,请参阅 警告:组合来自多个发布的列列表。
如果指定了可选的 WHERE 子句,则不会发布 expression 求值为 false 或 null 的行。请注意,表达式周围需要括号。使用用于复制连接的角色来计算 expression。
schema_name现有架构的名称。
SET ( publication_parameter [= value] [, ... ] )此子句修改了最初由 CREATE PUBLICATION 设置的发布参数。有关更多信息,请参阅此处。
new_owner发布的新所有者的用户名。
new_name发布的新名称。
更改发布以仅发布删除和更新
ALTER PUBLICATION noinsert SET (publish = 'update, delete');
向发布中添加一些表
ALTER PUBLICATION mypublication ADD TABLE users (user_id, firstname), departments;
更改针对表发布的列集
ALTER PUBLICATION mypublication SET TABLE users (user_id, firstname, lastname), TABLE departments;
将架构 marketing 和 sales 添加到发布 sales_publication
ALTER PUBLICATION sales_publication ADD TABLES IN SCHEMA marketing, sales;
将表 users、departments 和架构 production 添加到发布 production_publication
ALTER PUBLICATION production_publication ADD TABLE users, departments, TABLES IN SCHEMA production;
ALTER PUBLICATION 是 PostgreSQL 扩展。
如果您在文档中看到任何不正确、与您对特定功能的体验不符或需要进一步澄清的内容,请使用 此表单 报告文档问题。