他のバージョンの文書 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

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


ここでpublication_objectは以下のいずれかです。

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

説明

コマンドALTER PUBLICATIONはパブリケーションの属性を変更できます。

最初の3つの構文では、パブリケーションにどのテーブル/スキーマが含まれるかを変更します。 SET句は、パブリケーションのテーブル/スキーマのリストを指定したリストで置き換えます。パブリケーション内の既存のテーブル/スキーマは削除されます。 ADD句とDROP句はパブリケーションに1つ以上のテーブル/スキーマを追加または削除します。 既にサブスクライブされているパブリケーションにテーブル/スキーマを追加した場合、それを有効にするにはサブスクライブしている側でALTER SUBSCRIPTION ... REFRESH PUBLICATIONの操作を行う必要があることに注意してください。 DROP TABLES IN SCHEMAFOR TABLE/ADD TABLEを使って指定されたスキーマテーブルを削除せず、WHERE句のついたDROPとの組み合わせは認められていないことにも注意してください。

このコマンドの概要に挙げられている4番目の構文では、CREATE PUBLICATIONで指定されたすべてのパブリケーションの属性を変更できます。 このコマンドで属性を指定しなかったものについては、以前の設定が保持されます。

残りの構文では、パブリケーションの所有者および名前を変更します。

ALTER PUBLICATIONを使用するには、そのパブリケーションを所有していなければなりません。 パブリケーションにテーブルを追加するには、さらにそのテーブルを所有していることが必要です。 パブリケーションへのADD TABLES IN SCHEMASET TABLES IN SCHEMAには、実行するユーザーがスーパーユーザであることが必要です。 所有者を変更するには、新しい所有ロールの直接的あるいは間接的なメンバーでもなければなりません。 新しい所有者は、データベースにCREATE権限を持っていなければなりません。 また、FOR ALL TABLESFOR TABLES IN SCHEMAのパブリケーションの新しい所有者はスーパーユーザでなければなりません。 しかし、スーパーユーザはこれらの制限に関わらずパブリケーションの所有者を変更できます。

パブリケーションが列リストを持つテーブルもパブリッシュする場合、またはその逆の場合のスキーマの追加/設定はサポートされていません。

パラメータ

name

定義の変更の対象となる既存のパブリケーションの名前です。

table_name

既存のテーブルの名前です。 テーブル名の前にONLYが指定されたときは、そのテーブルだけが影響を受けます。 テーブル名の前にONLYが指定されていないときは、そのテーブルとそのすべての子テーブル(あれば)が影響を受けます。 オプションでテーブル名の後に*を指定して、子テーブルが含まれることを明示的に示すことができます。

オプションで、列リストを指定できます。 詳細はCREATE PUBLICATIONを参照してください。 同じテーブルが異なる列リストでパブリッシュされた複数のパブリケーションを持つサブスクリプションはサポートされていないことに注意してください。 列リストを変更するときに発生する可能性のある問題の詳細は警告: 複数のパブリケーションからの列リストの統合を参照してください。

オプションのWHERE句が指定されている場合、expressionが偽またはNULLと評価される行はパブリッシュされません。 式を括弧で囲む必要があることに注意してください。 expressionは、レプリケーション接続に使用されるロールで評価されます。

schema_name

既存のスキーマの名前。

SET ( publication_parameter [= value] [, ... ] )

この句では、元はCREATE PUBLICATIONにより設定されたパブリケーションのパラメータを変更します。 詳細な情報はそちらを参照してください。

new_owner

パブリケーションの新しい所有者のユーザ名です。

new_name

パブリケーションの新しい名前です。

deleteとupdateのみをパブリッシュするようにパブリケーションを変更します。

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;

パブリケーションsales_publicationにスキーマmarketingsalesを追加します。

ALTER PUBLICATION sales_publication ADD TABLES IN SCHEMA marketing, sales;

パブリケーションproduction_publicationにテーブルusersdepartments、スキーマproductionを追加します。

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

互換性

ALTER PUBLICATIONPostgreSQLの拡張です。

関連項目

CREATE PUBLICATION, DROP PUBLICATION, CREATE SUBSCRIPTION, ALTER SUBSCRIPTION