[11/15開催: PostgreSQL Conference Japan 2019 参加受付中] 
他のバージョンの文書 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 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

説明

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

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

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

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

ALTER PUBLICATIONを使用するには、そのパブリケーションを所有していなければなりません。 所有者を変更するには、新しい所有ロールの直接的あるいは間接的なメンバーでもなければなりません。 新しい所有者は、データベースにCREATE権限を持っていなければなりません。 また、FOR ALL TABLESのパブリケーションの新しい所有者はスーパーユーザでなければなりません。 しかし、スーパーユーザはこれらの制限を回避してパブリケーションの所有者を変更することができます。

パラメータ

name

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

table_name

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

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, departments;

互換性

ALTER PUBLICATIONPostgreSQLの拡張です。

関連項目

CREATE PUBLICATION, DROP PUBLICATION, CREATE SUBSCRIPTION, ALTER SUBSCRIPTION