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
为假或空的行。请注意,表达式周围需要用括号括起来。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 的扩展。