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 SKIP ( skip_option = 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サブスクリプションを使用するには、サブスクリプションを所有している必要があります。 サブスクリプションの名前を変更したり、所有者を変更するには、データベースにCREATEパーミッションが必要です。 さらに、所有者を変更するには、新しい所有ロールにSETロールできる必要があります。 サブスクリプションにパスワード_required=偽がある場合、スーパーユーザーのみが変更できます。

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

コマンドALTER SUBSCRIPTION ... REFRESH PUBLICATIONrefreshオプションがtrueALTER SUBSCRIPTION ... {SET|ADD|DROP} PUBLICATION ...は、トランザクションブロック内では実行できません。 《マッチ度[]》サブスクリプションがtwo_phaseコミットを有効にしている場合でも、copy_datafalseでない限り、これらのコマンドは実行できません。 実際の2相状態を知るには、copy_datasubtwophasestate列を参照してください。

パラメータ

name

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

CONNECTION 'conninfo'

この句では、元はCREATE SUBSCRIPTIONにより設定された接続文字列を置き換えます。 詳細な情報はそちらを参照してください。

SET PUBLICATION publication_name
ADD PUBLICATION publication_name
DROP PUBLICATION publication_name

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

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

refresh (boolean)

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

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

REFRESH PUBLICATION

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

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

copy_data (boolean)

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

テーブルの行フィルターWHERE句が変更されていても、以前にサブスクライブされたテーブルはコピーされません。

《機械翻訳》コピー_データ=真オリジンパラメータと対話する方法の詳細については、注釈を参照してください。

《機械翻訳》バイナリの既存のパラメータをコピーする方法については、CREATEサブスクリプションバイナリフォーマットデータを参照してください。

ENABLE

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

DISABLE

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

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

《機械翻訳》この句は、もともとCREATE SUBSCRIPTIONによって設定されたパラメータを変更します。 詳細については、ここを参照してください。 変更できるパラメータは、 slot_name, synchronous_commit, binary, streaming, disable_on_error, password_required, run_as_owner, and origin. スーパーユーザだけがpassword_required = falseを設定できます。

SKIP ( skip_option = value )

《マッチ度[76.506765]》リモートトランザクションのすべての変更の適用をスキップします。 受信データが何らかの制約に違反している場合、解決されるまで論理レプリケーションは停止します。 ALTER SUBSCRIPTION ... SKIPコマンドを使用すると、論理レプリケーションワーカーはトランザクション内のすべてのデータ修正変更をスキップします。 このオプションは、サブスクライバでtwo_phaseを有効にしてすでに準備されているトランザクションには影響しません。 論理レプリケーションワーカーがトランザクションをスキップするかトランザクションを終了ことに成功した後、LSN(pg_subscription.subskiplsnに格納されています)がクリアされます。 論理レプリケーションの競合の詳細については31.5を参照してください。 このコマンドを使用するには、スーパーユーザ権限が必要です。 《機械翻訳》リモートトランザクションのすべての変更の適用をスキップします。 着信データが制約に違反した場合、ロジカルレプリケーションは解決されるまで停止します。 ALTERサブスクリプション.スキップコマンドを使用すると、ロジカルレプリケーションワーカーはトランザクション内のデータの変更変更をすべてスキップします。 このオプションは、サブスクライバーでtwo_phaseを有効にしても、すでにプリペアドになっているトランザクションには影響しません。 ロジカルレプリケーションワーカーがトランザクションを正常にスキップするかトランザクションを完了した後、LSN(pg_サブスクリプション.subskiplsnに格納されている)がクリアされます。 ロジカルレプリケーションの競合の詳細は31.5を参照してください。

skip_optionは、この操作のオプションを指定します。 サポートされているオプションは以下の通りです。

lsn (pg_lsn)

論理レプリケーションワーカーによって変更がスキップされるリモートトランザクションの終了LSNを指定します。 終了LSNは、トランザクションがコミットまたは準備されるLSNです。 個々のサブトランザクションのスキップはサポートされません。 NONEを設定すると、LSNがリセットされます。

new_owner

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

new_name

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

《機械翻訳》タイプbooleanのパラメータを指定する場合、=パートを省略できます。 これはを指定するのと同じです。

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

ALTER SUBSCRIPTION mysub SET PUBLICATION insert_only;

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

ALTER SUBSCRIPTION mysub DISABLE;

互換性

ALTER SUBSCRIPTIONPostgreSQLの拡張です。

関連項目

CREATE SUBSCRIPTION, DROP SUBSCRIPTION, CREATE PUBLICATION, ALTER PUBLICATION