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
SKIP (skip_option
=value
) ALTER SUBSCRIPTIONname
OWNER TO {new_owner
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER SUBSCRIPTIONname
RENAME TOnew_name
ALTER SUBSCRIPTION
はCREATE SUBSCRIPTIONで指定できるサブスクリプションの属性のほとんどを変更できます。
《機械翻訳》ALTERサブスクリプション
を使用するには、サブスクリプションを所有している必要があります。
サブスクリプションの名前を変更したり、所有者を変更するには、データベースにCREATE
パーミッションが必要です。
さらに、所有者を変更するには、新しい所有ロールにSETロール
できる必要があります。
サブスクリプションにパスワード_required=偽
がある場合、スーパーユーザーのみが変更できます。
パブリケーションを更新するときには、もうパブリケーションの一部ではないリレーションを削除し、存在すればテーブル同期スロットも削除します。 リモートホストでサブスクリプションのために割り当てられたリソースを解放するために、これらのスロットを解放することが必要です。 ネットワーク切れやその他のエラーによりPostgreSQLがスロットを削除できなかった場合、エラーが報告されます。 この状況で処理を進めるためには、ユーザは操作を再度試みるか、または、スロットをサブスクリプションから切り離し、DROP SUBSCRIPTIONで説明するようサブスクリプションを削除することが必要です。
コマンドALTER SUBSCRIPTION ... REFRESH PUBLICATION
とrefresh
オプションがtrue
のALTER SUBSCRIPTION ... {SET|ADD|DROP} PUBLICATION ...
は、トランザクションブロック内では実行できません。
《マッチ度[]》サブスクリプションがtwo_phase
コミットを有効にしている場合でも、copy_data
がfalse
でない限り、これらのコマンドは実行できません。
実際の2相状態を知るには、copy_data
のsubtwophasestate
列を参照してください。
name
属性の変更の対象となるサブスクリプションの名前です。
CONNECTION 'conninfo
'
この句では、元はCREATE SUBSCRIPTIONにより設定された接続文字列を置き換えます。 詳細な情報はそちらを参照してください。
SET PUBLICATION publication_name
ADD PUBLICATION publication_name
DROP PUBLICATION publication_name
この形式はサブスクライブするパブリケーションのリストを変更します。
SET
はパブリケーションのリスト全体を新しいリストで置き換え、ADD
は追加のパブリケーションをパブリケーションのリストに追加し、DROP
はパブリケーションをパブリケーションのリストから削除します。
ユーザーが後から追加できるよう存在しないパブリケーションをADD
やSET
で指定することを許容します。
詳細は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 SUBSCRIPTION
はPostgreSQLの拡張です。