Redrock Postgres 搜索 英文
版本: 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

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 调用用户要求为一个超级用户,才能添加到发布中。要更改所有者,您必须能够将 SET ROLE 设置为新的拥有者角色,并且该角色必须在数据库上拥有 CREATE 权限。此外,FOR ALL TABLESFOR TABLES IN SCHEMA 发布的新所有者必须是一个超级用户。但是,无论这些限制是什么,一个超级用户都可以更改发布的所有权。

当出版物还发布带有一列列表的表时,不支持添加/设置任何模式,反之亦然。

参数

name

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

table_name

现有表的名称。如果在表名前指定 ONLY,则仅影响该表。如果没有指定 ONLY,则该表及其所有后代表(如果有)均会受到影响。还可以选择在表名后指定 * 以明确指出后代表已包括在内。

还可以选择指定一列列表。有关详细信息,请参阅 CREATE PUBLICATION。请注意,不支持同时在多个发布中对同一张表发布多列列表的订阅。有关更改列列表的潜在问题的详细信息,请参阅 警告:合并多个发布的列列表

如果指定了可选 WHERE 子句,则不会发布那些 expression 为假或空的行。请注意,表达式周围需要用括号括起来。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;

将架构 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 PUBLICATIONDROP PUBLICATIONCREATE SUBSCRIPTIONALTER SUBSCRIPTION