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