他のバージョンの文書 16 | 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 SUBSCRIPTION

ALTER SUBSCRIPTION — サブスクリプションの定義を変更する

概要

ALTER SUBSCRIPTION name CONNECTION 'conninfo'
ALTER SUBSCRIPTION name SET PUBLICATION publication_name [, ...] [ WITH ( publication_option [= value] [, ... ] ) ]
ALTER SUBSCRIPTION name ADD PUBLICATION publication_name [, ...] [ WITH ( publication_option [= value] [, ... ] ) ]
ALTER SUBSCRIPTION name DROP PUBLICATION publication_name [, ...] [ WITH ( publication_option [= value] [, ... ] ) ]
ALTER SUBSCRIPTION name REFRESH PUBLICATION [ WITH ( refresh_option [= value] [, ... ] ) ]
ALTER SUBSCRIPTION name ENABLE
ALTER SUBSCRIPTION name DISABLE
ALTER SUBSCRIPTION name SET ( subscription_parameter [= value] [, ... ] )
ALTER SUBSCRIPTION name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER SUBSCRIPTION name RENAME TO new_name

説明

ALTER SUBSCRIPTIONCREATE SUBSCRIPTIONで指定できるサブスクリプションの属性のほとんどを変更できます。

ALTER SUBSCRIPTIONを使用するには、そのサブスクリプションを所有していなければなりません。 所有者を変更するには、新しい所有ロールの直接的あるいは間接的メンバーでもなければなりません。 新しい所有者はスーパーユーザである必要があります。 (現在は、すべてのサブスクリプションの所有者はスーパーユーザでなければならず、そのため所有者のチェックは実際には回避されます。 しかしこれは将来、変更されるかもしれません。)

パブリケーションを更新するときには、もうパブリケーションの一部ではないリレーションを削除し、存在すればテーブル同期スロットも削除します。 リモートホストでサブスクリプションのために割り当てられたリソースを解放するために、これらのスロットを解放することが必要です。 ネットワーク切れやその他のエラーによりPostgreSQLがスロットを削除できなかった場合、ERRORが報告されます。 この状況で処理を進めるためには、ユーザは操作を再度試みるか、または、スロットをサブスクリプションから切り離し、DROP SUBSCRIPTIONで説明するようサブスクリプションを削除することが必要です。

コマンドALTER SUBSCRIPTION ... REFRESH PUBLICATIONrefreshオプションがtrueALTER SUBSCRIPTION ... {SET|ADD|DROP} PUBLICATION ...は、トランザクションブロック内では実行できません。

パラメータ

name

属性の変更の対象となるサブスクリプションの名前です。

CONNECTION 'conninfo'

この句では、元はCREATE SUBSCRIPTIONにより設定された接続の属性を変更します。 詳細な情報はそちらを参照してください。

SET PUBLICATION publication_name
ADD PUBLICATION publication_name
DROP PUBLICATION publication_name

サブスクライブするパブリケーションのリストを変更します。 SETはパブリケーションのリスト全体を新しいリストで置き換え、ADDは追加のパブリケーションをパブリケーションのリストに追加し、DROPはパブリケーションをパブリケーションのリストから削除します。 詳細はCREATE SUBSCRIPTIONを参照してください。 デフォルトでは、このコマンドはREFRESH PUBLICATIONのような動作もします。

publication_optionは、この操作についての追加のオプションを指定します。 以下のオプションがサポートされています。

refresh (boolean)

falseにすると、このコマンドはテーブルを情報を更新しません。 後で別にREFRESH PUBLICATIONを実行することになります。 デフォルトはtrueです。

さらに、暗黙の更新動作を制御するためにREFRESH PUBLICATIONの項で説明されているオプションを指定できます。

REFRESH PUBLICATION

不足しているテーブル情報をパブリッシャーから取得します。 最後のREFRESH PUBLICATION、あるいはCREATE SUBSCRIPTIONの実行の後でサブスクライブ対象のパブリケーションに追加されたテーブルの複製が、これにより開始されます。

refresh_optionは更新(refresh)の操作について追加のオプションを指定します。 以下のオプションがサポートされています。

copy_data (boolean)

サブスクライブ対象のパブリケーションにある既存のデータが、レプリケーションの開始時にコピーされるかどうかを指定します。 デフォルトはtrueです。 (以前にサブスクライブされたテーブルはコピーされません。)

ENABLE

以前に無効化されたサブスクリプションを有効化し、トランザクションの終了時に論理レプリケーションワーカを起動します。

DISABLE

実行中のサブスクリプションを無効化し、トランザクションの終了時に論理レプリケーションワーカを停止します。

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

この句では、元はCREATE SUBSCRIPTIONにより設定されたパラメータを変更します。 詳細な情報はそちらを参照してください。 変更できるパラメータはslot_namesynchronous_commitbinarystreamingです。

new_owner

サブスクリプションの新しい所有者のユーザ名です。

new_name

サブスクリプションの新しい名前です。

サブスクリプションがサブスクライブするパブリケーションをinsert_onlyに変更します。

ALTER SUBSCRIPTION mysub SET PUBLICATION insert_only;

サブスクリプションを無効化(停止)します。

ALTER SUBSCRIPTION mysub DISABLE;

互換性

ALTER SUBSCRIPTIONPostgreSQLの拡張です。

関連項目

CREATE SUBSCRIPTION, DROP SUBSCRIPTION, CREATE PUBLICATION, ALTER PUBLICATION