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
評估為 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;
將模式 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 擴充功能。
如果您在文件中發現任何不正確、與您使用特定功能的經驗不符,或需要進一步澄清之處,請使用此表單來回報文件問題。