DROP SUBSCRIPTION — サブスクリプションを削除する
DROP SUBSCRIPTION [ IF EXISTS ] name
[ CASCADE | RESTRICT ]
DROP SUBSCRIPTION
はデータベースクラスタからサブスクリプションを削除します。
スーパーユーザのみがサブスクリプションを削除できます。
サブスクリプションがレプリケーションスロットに紐付けられている場合、DROP SUBSCRIPTION
をトランザクションブロックの内側で実行することはできません。
(スロットの設定を解除するにはALTER SUBSCRIPTION
を使うことができます。)
name
削除対象のサブスクリプションの名前です。
CASCADE
RESTRICT
サブスクリプションに依存するものはないので、これらのキーワードは何も効果がありません。
リモートホストのレプリケーションスロットに紐付けられているサブスクリプション(これが通常の状態です)を削除するとき、DROP SUBSCRIPTION
はその操作の一部として、リモートホストに接続し、レプリケーションスロット(と残りのテーブル同期スロット)を削除しようとします。
リモートホスト上でサブスクリプションに割り当てられたリソースを解放するために、これが必要となります。
リモートホストに到達できない、あるいはリモートのレプリケーションスロットが削除できない、存在しない、存在したことがない、という理由で削除に失敗した場合、DROP SUBSCRIPTION
コマンドは失敗します。
この状況において先へ進むためには、ALTER SUBSCRIPTION ... SET (slot_name = NONE)
を実行してサブスクリプションとレプリケーションスロットの紐付けを解除してください。
その後ならDROP SUBSCRIPTION
はリモートホスト上で何のアクションも起こそうとしません。
リモートのレプリケーションスロットがそれでも存在する場合、それ (と関連するテーブル同期スロット) を手作業で削除すべきであることに注意してください。
そうしなければ、WALを保存し続け、最終的にはディスクを一杯にしてしまうかもしれません。
31.2.1も参照してください。
サブスクリプションがレプリケーションスロットと紐付けられている場合、DROP SUBSCRIPTION
をトランザクションブロックの内側で実行することはできません。
サブスクリプションを削除します。
DROP SUBSCRIPTION mysub;
DROP SUBSCRIPTION
はPostgreSQLの拡張です。