9.3 9.4 9.5 9.6 10 11 12 13 14 15
阿里云PostgreSQL 问题报告 纠错本页面

ALTER PUBLICATION

ALTER PUBLICATION — 修改发布的定义

大纲

ALTER PUBLICATION name ADD publication_object [, ...]
ALTER PUBLICATION name SET publication_object [, ...]
ALTER PUBLICATION name DROP publication_object [, ...]
ALTER PUBLICATION name SET ( publication_parameter [= value] [, ... ] )
ALTER PUBLICATION name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER PUBLICATION name RENAME TO new_name

where publication_object is one of:

    TABLE [ ONLY ] table_name [ * ] [ ( column_name [, ... ] ) ] [ WHERE ( expression ) ] [, ... ]
    TABLES IN SCHEMA { schema_name | CURRENT_SCHEMA } [, ... ]

描述

命令ALTER PUBLICATION可以更改发布的属性。

前三个变体改变了出版物中包含的表/模式。 SET子句将用指定的列表替换出版物中的表/模式列表; 出版物中存在的表/模式将被删除。 ADDDROP子句将向出版物中添加和删除一个或多个表/模式。 请注意,向已订阅的出版物添加表/模式将需要在订阅方执行ALTER SUBSCRIPTION ... REFRESH PUBLICATION操作才能生效。 还请注意,DROP TABLES IN SCHEMA不会删除使用FOR TABLE/ADD TABLE指定的任何模式表, 并且DROPWHERE子句的组合是不允许的。

第四条语句可以改变在CREATE PUBLICATION中指定的所有发布属性。 该命令中未提及的属性保留其先前的设置。

其余语句更改所有者和发布的名称。

要使用ALTER PUBLICATION,您必须拥有该发布物。 向发布物添加表还需要拥有该表。 将ADD TABLES IN SCHEMASET TABLES IN SCHEMA添加到发布物需要调用用户是超级用户。 要更改所有者,您还必须是新所有者角色的直接或间接成员。 新所有者必须在数据库上具有CREATE权限。 此外,FOR ALL TABLESFOR TABLES IN SCHEMA 发布物的新所有者必须是超级用户。但是,超级用户可以 更改发布物的所有权,而不受这些限制的影响。

添加/设置任何模式时,如果发布的同时还发布了带有列列表的表格,反之亦然,是不受支持的。

参数

name

要修改定义的现有发布的名称。

table_name

现有表的名称。如果在表名之前指定了ONLY,则只有该表受到影响。 如果没有指定ONLY,则该表及其所有后代表(如果有的话)都会受到影响。 可选地,可以在表名之后指定*以明确指示包含后代表。

可选地,可以指定列列表。有关详细信息,请参见CREATE PUBLICATION。 请注意,不支持在具有不同列列表的多个发布中发布相同表的情况。有关更改列列表时可能出现的问题的详细信息,请参见警告:合并来自多个出版物的列列表

如果指定了可选的WHERE子句,则表达式 评估为false或null的行将不会被发布。请注意,表达式周围需要括号。 使用用于复制连接的角色评估表达式

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');

向出版物添加一些表格:

ALTER PUBLICATION mypublication ADD TABLE users (user_id, firstname), departments;

更改表格的发布列集合:

ALTER PUBLICATION mypublication SET TABLE users (user_id, firstname, lastname), TABLE departments;

将模式marketingsales添加到出版物sales_publication中:

ALTER PUBLICATION sales_publication ADD TABLES IN SCHEMA marketing, sales;

将表usersdepartments和模式 production添加到出版物 production_publication中:

ALTER PUBLICATION production_publication ADD TABLE users, departments, TABLES IN SCHEMA production;

兼容性

ALTER PUBLICATIONPostgreSQL的一个扩展。

又见

CREATE PUBLICATION, DROP PUBLICATION, CREATE SUBSCRIPTION, ALTER SUBSCRIPTION