ALTER PUBLICATION — パブリケーションの定義を変更する
ALTER PUBLICATIONnameADD TABLE [ ONLY ]table_name[ * ] [, ...] ALTER PUBLICATIONnameSET TABLE [ ONLY ]table_name[ * ] [, ...] ALTER PUBLICATIONnameDROP TABLE [ ONLY ]table_name[ * ] [, ...] ALTER PUBLICATIONnameSET (publication_parameter[=value] [, ... ] ) ALTER PUBLICATIONnameOWNER TO {new_owner| CURRENT_USER | SESSION_USER } ALTER PUBLICATIONnameRENAME 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の拡張です。