更新时间:2026-07-02 GMT+08:00
ALTER PUBLICATION
功能描述
更改发布的属性。
注意事项
- 该语法仅8.2.0.100及以上集群版本支持。
- 发布的所有者和系统管理员才能执行ALTER PUBLICATION。
- 要更改发布的所有者,用户必须是新所有者角色的直接或者间接成员,并且新的所有者必须具有当前数据库的CREATE权限。
- FOR ALL TABLES发布的新所有者必须是系统管理员。
- 管理员用户可以更改任何发布的所属关系。
语法格式
- 向发布中添加一个或多个发布对象。
1ALTER PUBLICATION name ADD publication_object [, ...]
- 从发布中删除一个或多个发布对象。
1ALTER PUBLICATION name DROP publication_object [, ...]
-
1ALTER PUBLICATION name SET publication_object [, ...]
- 设置发布的参数,未显示指定的参数保持原值。
1ALTER PUBLICATION name SET ( publication_parameter [= value] [, ... ] )
- 更改发布的所有者。
1ALTER PUBLICATION name OWNER TO new_owner
- 重命名发布。
1ALTER PUBLICATION name RENAME TO new_name
其中发布对象publication_object为:
TABLE table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ... ]
参数说明
示例
- 创建模式、示例表及样例数据。
DROP SCHEMA IF EXISTS pub_demo; CREATE SCHEMA pub_demo; DROP TABLE IF EXISTS pub_demo.sales; CREATE TABLE pub_demo.sales ( sale_id INTEGER, product VARCHAR(50), amount INTEGER NOT NULL, sale_date DATE ) WITH (ORIENTATION = COLUMN,enable_disaster_cstore='on') DISTRIBUTE BY HASH ( sale_id); DROP TABLE IF EXISTS pub_demo.sales; CREATE TABLE pub_demo.customers ( cust_id INTEGER, cust_name VARCHAR(50), region VARCHAR(20) ) WITH (ORIENTATION = COLUMN,enable_disaster_cstore='on') DISTRIBUTE BY HASH ( cust_id); INSERT INTO pub_demo.sales VALUES (1, 'Laptop', 500, '2026-01-15'); INSERT INTO pub_demo.sales VALUES (2, 'Mouse', 900, '2026-01-16'); INSERT INTO pub_demo.customers VALUES (101, 'Alice', 'East'); INSERT INTO pub_demo.customers VALUES (102, 'Bob', 'West');创建名称为pub_sales的发布。
CREATE PUBLICATION pub_sales FOR TABLE pub_demo.sales;
- 向发布中添加表。
ALTER PUBLICATION pub_sales ADD TABLE pub_demo.customers; ALTER PUBLICATION pub_sales ADD TABLE pub_demo.customers;
- 从发布中删除表。
ALTER PUBLICATION pub_sales DROP ALL TABLES IN SCHEMA pub_demo; ALTER PUBLICATION pub_sales DROP TABLE pub_demo.customers;
- 重新设置发布对象。
ALTER PUBLICATION pub_sales SET TABLE pub_demo.customers;
- 向发布中添加整个schema的所有表。
ALTER PUBLICATION pub_sales ADD ALL TABLES IN SCHEMA public;
- 修改发布参数,只发布INSERT操作。
ALTER PUBLICATION pub_sales SET (publish = 'insert');
- 修改发布的所有者。
CREATE ROLE new_publisher PASSWORD '********'; GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA pub_demo TO new_publisher; ALTER PUBLICATION pub_sales OWNER TO new_publisher;
- 修改发布名称。
ALTER PUBLICATION pub_sales RENAME TO pub_sales_new;
查看数据库中的发布信息
DWS提供以下系统表和视图用于查看当前数据库中的发布信息。
- PG_PUBLICATION系统表,用于查看当前数据库中创建的发布数据信息,包括发布名称、所有者、参数设置等。
- PG_PUBLICATION_TABLES系统视图,用于查看发布包含的表。