================= ALTER PUBLICATION ================= .. container:: refentry :name: SQL-ALTERPUBLICATION .. container:: titlepage .. container:: refnamediv .. rubric:: ALTER PUBLICATION :name: alter-publication ALTER PUBLICATION — 修改发布的定义 .. container:: refsynopsisdiv .. rubric:: 大纲 :name: 大纲 .. code:: synopsis ALTER PUBLICATION name ADD TABLE [ ONLY ] table_name [ * ] [, ...] ALTER PUBLICATION name SET TABLE [ ONLY ] table_name [ * ] [, ...] ALTER PUBLICATION name DROP TABLE [ ONLY ] table_name [ * ] [, ...] ALTER PUBLICATION name SET ( publication_parameter [= value] [, ... ] ) ALTER PUBLICATION name OWNER TO { new_owner | CURRENT_USER | SESSION_USER } ALTER PUBLICATION name RENAME TO new_name .. container:: refsect1 :name: id-1.9.3.25.5 .. rubric:: 描述 :name: 描述 命令\ ``ALTER PUBLICATION``\ 可以更改发布的属性。 前三个语句更改哪些表是该发布的一部分。\ ``SET TABLE`` 子句用指定的表替换发布中的表的列表。\ ``ADD TABLE``\ 和 ``DROP TABLE``\ 子句将从发布中添加和删除一个或多个表。 请注意,将表添加到已订阅的发布中将需要在订阅端执行\ ``ALTER SUBSCRIPTION ... REFRESH PUBLICATION``\ 操作才能生效。 第四条语句可以改变在\ `CREATE PUBLICATION `__\ 中指定的所有发布属性。 该命令中未提及的属性保留其先前的设置。 其余语句更改所有者和发布的名称。 你必须拥有该发布才能使用\ ``ALTER PUBLICATION``\ 。要改变所有者, 你也必须是新所有者角色的直接或间接成员。新的所有者必须在数据库上拥有 ``CREATE``\ 权限。此外,\ ``FOR ALL TABLES`` 发布的新所有者必须是超级用户。但是, 超级用户可以在避开这些限制的情况下更改发布的所有权。 .. container:: refsect1 :name: id-1.9.3.25.6 .. rubric:: 参数 :name: 参数 .. container:: variablelist *``name``* 要修改定义的现有发布的名称。 *``table_name``* 现有表的名称。如果在表名之前指定了\ ``ONLY``\ ,则只有该表受到影响。 如果没有指定\ ``ONLY``\ ,则该表及其所有后代表(如果有的话)都会受到影响。 可选地,可以在表名之后指定\ ``*``\ 以明确指示包含后代表。 ``SET ( publication_parameter`` [= *``value``*] [, ... ] ) 该子句修改最初由\ `CREATE PUBLICATION `__\ 设置的发布参数。 *``new_owner``* 发布的新所有者的用户名。 *``new_name``* 发布的新名称。 .. container:: refsect1 :name: id-1.9.3.25.7 .. rubric:: 示例 :name: 示例 将发布修改为只发布删除和更新: Change the publication to publish only deletes and updates: .. code:: programlisting ALTER PUBLICATION noinsert SET (publish = 'update, delete'); 给发布添加一些表: .. code:: programlisting ALTER PUBLICATION mypublication ADD TABLE users, departments; .. container:: refsect1 :name: id-1.9.3.25.8 .. rubric:: 兼容性 :name: 兼容性 ``ALTER PUBLICATION``\ 是PostgreSQL的一个扩展。 .. container:: refsect1 :name: id-1.9.3.25.9 .. rubric:: 又见 :name: 又见 `CREATE PUBLICATION `__, `DROP PUBLICATION `__, `CREATE SUBSCRIPTION `__, `ALTER SUBSCRIPTION `__