支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11 / 10

ALTER PUBLICATION

ALTER PUBLICATION — 變更發布的定義

概要

ALTER PUBLICATION name ADD publication_object [, ...]
ALTER PUBLICATION name SET publication_object [, ...]
ALTER PUBLICATION name DROP publication_object [, ...]
ALTER PUBLICATION name SET ( publication_parameter [= value] [, ... ] )
ALTER PUBLICATION name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER PUBLICATION name RENAME TO new_name

where publication_object is one of:

    TABLE [ ONLY ] table_name [ * ] [ ( column_name [, ... ] ) ] [ WHERE ( expression ) ] [, ... ]
    TABLES IN SCHEMA { schema_name | CURRENT_SCHEMA } [, ... ]

描述

指令 ALTER PUBLICATION 可以變更發布的屬性。

前三個變體會變更哪些表格/模式是發布的一部分。SET 子句會將發布中的表格/模式清單替換為指定的清單;發布中存在的現有表格/模式將被移除。ADDDROP 子句將從發布中新增和移除一個或多個表格/模式。請注意,將表格/模式新增到已經訂閱的發布中,需要訂閱端執行 ALTER SUBSCRIPTION ... REFRESH PUBLICATION 動作才能生效。另請注意,DROP TABLES IN SCHEMA 不會移除任何使用 FOR TABLE/ADD TABLE 指定的模式表格,並且不允許將 DROPWHERE 子句組合使用。

概要中列出的此指令的第四個變體可以變更 CREATE PUBLICATION 中指定的所有發布屬性。指令中未提及的屬性會保留其先前的設定。

其餘的變體會變更發布的所有者和名稱。

您必須擁有發布才能使用 ALTER PUBLICATION。將表格新增到發布也需要擁有該表格。將 ADD TABLES IN SCHEMASET TABLES IN SCHEMA 新增到發布需要呼叫使用者是超級使用者。若要變更所有者,您必須能夠 SET ROLE 為新的擁有角色,且該角色必須在資料庫上具有 CREATE 權限。此外,FOR ALL TABLESFOR 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;

將模式 marketingsales 新增到發布 sales_publication

ALTER PUBLICATION sales_publication ADD TABLES IN SCHEMA marketing, sales;

將表格 usersdepartments 和模式 production 新增到發布 production_publication

ALTER PUBLICATION production_publication ADD TABLE users, departments, TABLES IN SCHEMA production;

相容性

ALTER PUBLICATIONPostgreSQL 擴充功能。

提交更正

如果您在文件中發現任何不正確、與您使用特定功能的經驗不符,或需要進一步澄清之處,請使用此表單來回報文件問題。