ALTER SUBSCRIPTION — サブスクリプションの定義を変更する
ALTER SUBSCRIPTIONname
CONNECTION 'conninfo
' ALTER SUBSCRIPTIONname
SET PUBLICATIONpublication_name
[, ...] [ WITH (publication_option
[=value
] [, ... ] ) ] ALTER SUBSCRIPTIONname
ADD PUBLICATIONpublication_name
[, ...] [ WITH (publication_option
[=value
] [, ... ] ) ] ALTER SUBSCRIPTIONname
DROP PUBLICATIONpublication_name
[, ...] [ WITH (publication_option
[=value
] [, ... ] ) ] ALTER SUBSCRIPTIONname
REFRESH PUBLICATION [ WITH (refresh_option
[=value
] [, ... ] ) ] ALTER SUBSCRIPTIONname
ENABLE ALTER SUBSCRIPTIONname
DISABLE ALTER SUBSCRIPTIONname
SET (subscription_parameter
[=value
] [, ... ] ) ALTER SUBSCRIPTIONname
OWNER TO {new_owner
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER SUBSCRIPTIONname
RENAME TOnew_name
ALTER SUBSCRIPTION
はCREATE SUBSCRIPTIONで指定できるサブスクリプションの属性のほとんどを変更できます。
ALTER SUBSCRIPTION
を使用するには、そのサブスクリプションを所有していなければなりません。
所有者を変更するには、新しい所有ロールの直接的あるいは間接的メンバーでもなければなりません。
新しい所有者はスーパーユーザである必要があります。
(現在は、すべてのサブスクリプションの所有者はスーパーユーザでなければならず、そのため所有者のチェックは実際には回避されます。
しかしこれは将来、変更されるかもしれません。)
パブリケーションを更新するときには、もうパブリケーションの一部ではないリレーションを削除し、存在すればテーブル同期スロットも削除します。 リモートホストでサブスクリプションのために割り当てられたリソースを解放するために、これらのスロットを解放することが必要です。 ネットワーク切れやその他のエラーによりPostgreSQLがスロットを削除できなかった場合、ERRORが報告されます。 この状況で処理を進めるためには、ユーザは操作を再度試みるか、または、スロットをサブスクリプションから切り離し、DROP SUBSCRIPTIONで説明するようサブスクリプションを削除することが必要です。
コマンドALTER SUBSCRIPTION ... REFRESH PUBLICATION
とrefresh
オプションがtrue
のALTER 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_name
、synchronous_commit
、binary
とstreaming
です。
new_owner
サブスクリプションの新しい所有者のユーザ名です。
new_name
サブスクリプションの新しい名前です。
サブスクリプションがサブスクライブするパブリケーションをinsert_only
に変更します。
ALTER SUBSCRIPTION mysub SET PUBLICATION insert_only;
サブスクリプションを無効化(停止)します。
ALTER SUBSCRIPTION mysub DISABLE;
ALTER SUBSCRIPTION
はPostgreSQLの拡張です。