ALTER PUBLICATION — 更改发布的定义
ALTER PUBLICATIONname
ADDpublication_object
[, ...] ALTER PUBLICATIONname
SETpublication_object
[, ...] ALTER PUBLICATIONname
DROPpublication_object
[, ...] ALTER PUBLICATIONname
SET (publication_parameter
[=value
] [, ... ] ) ALTER PUBLICATIONname
OWNER TO {new_owner
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER PUBLICATIONname
RENAME TOnew_name
wherepublication_object
is 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 扩展。
如果您在文档中看到任何不正确的内容,与您对特定功能的体验不符或需要进一步说明,请使用 此表格 报告文档问题。