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
可以更改发布的属性。
前三个变体改变了publication中包含的表/模式。 SET
子句将用指定的列表替换publication中的表/模式列表;
publication中存在的表/模式将被删除。 ADD
和DROP
子句将向publication中添加和删除一个或多个表/模式。
请注意,向已订阅的publication添加表/模式将需要在订阅方执行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
添加到发布物需要调用用户是超级用户。
要更改所有者,您还必须是新所有者角色的直接或间接成员。
新所有者必须在数据库上具有CREATE
权限。
此外,FOR ALL TABLES
或FOR TABLES IN SCHEMA
发布物的新所有者必须是超级用户。但是,超级用户可以
更改发布物的所有权,而不受这些限制的影响。
当publication还发布带有列表的表时,不支持添加/设置任何模式,反之亦然。
name
要修改定义的现有发布的名称。
table_name
现有表的名称。如果在表名之前指定了ONLY
,则只有该表受到影响。
如果没有指定ONLY
,则该表及其所有后代表(如果有的话)都会受到影响。
可选地,可以在表名之后指定*
以明确指示包含后代表。
可选地,可以指定列列表。有关详细信息,请参见CREATE PUBLICATION。 请注意,不支持在具有不同列列表的多个发布中发布相同表的情况。有关更改列列表时可能出现的问题的详细信息,请参见警告:合并来自多个publication的列列表。
如果指定了可选的WHERE
子句,则expression
评估为false或null的行将不会被发布。请注意,表达式周围需要括号。
使用用于复制连接的角色评估expression
。
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');
向publication添加一些表格:
ALTER PUBLICATION mypublication ADD TABLE users (user_id, firstname), departments;
更改表格的发布列集合:
ALTER PUBLICATION mypublication SET TABLE users (user_id, firstname, lastname), TABLE departments;
将模式marketing
和sales
添加到publicationsales_publication
中:
ALTER PUBLICATION sales_publication ADD TABLES IN SCHEMA marketing, sales;
将表users
、departments
和模式
production
添加到publication
production_publication
中:
ALTER PUBLICATION production_publication ADD TABLE users, departments, TABLES IN SCHEMA production;
ALTER PUBLICATION
是PostgreSQL的一个扩展。