ALTER PUBLICATION — パブリケーションの定義を変更する
ALTER PUBLICATIONname
ADD TABLE [ ONLY ]table_name
[ * ] [, ...] ALTER PUBLICATIONname
SET TABLE [ ONLY ]table_name
[ * ] [, ...] ALTER PUBLICATIONname
DROP TABLE [ ONLY ]table_name
[ * ] [, ...] ALTER PUBLICATIONname
SET (publication_parameter
[=value
] [, ... ] ) ALTER PUBLICATIONname
OWNER TO {new_owner
| CURRENT_USER | SESSION_USER } ALTER PUBLICATIONname
RENAME TOnew_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 PUBLICATION
はPostgreSQLの拡張です。