DROP SUBSCRIPTION
Эта страница переведена при помощи нейросети GigaChat.
DROP SUBSCRIPTION
— удаление подписки.
Синтаксис
DROP SUBSCRIPTION [ IF EXISTS ] name [ CASCADE | RESTRICT ]
Описание
DROP SUBSCRIPTION
удаляет подписку из кластера баз данных.
Выполнить эту команду может только владелец подписки.
DROP SUBSCRIPTION
не может быть выполнен внутри блока транзакции, если подписка связана со слотом репликации. Для сброса слота используйте команду ALTER SUBSCRIPTION
.
Параметры
name
- Задает имя существующей подписки, которая должна быть удалена.
CASCADE
RESTRICT
- Не имеют никакого эффекта, поскольку нет зависимостей от подписок.
Примечания
Если подписка связана с репликационным слотом на удаленном сервере (что является нормальным состоянием), команда DROP SUBSCRIPTION
при выполнении попытается подключиться к удаленному серверу и удалить этот слот, а также все слоты, связанные с синхронизацией таблиц. Это необходимо для освобождения ресурсов, занятых подпиской на удаленной стороне.
Если подключение к удаленному серверу невозможно, либо слот не может быть удален (или никогда не существовал), команда DROP SUBSCRIPTION
завершится с ошибкой.
Чтобы обойти эту ситуацию, сначала нужно отключить подписку с помощью команды:
ALTER SUBSCRIPTION ... DISABLE;
Затем отключите подписку от репликационного слота:
ALTER SUBSCRIPTION имя_подписки SET (slot_name = NONE);
После этого команда DROP SUBSCRIPTION
не будет пытаться выполнять действия на удаленной стороне и завершится успешно.
Однако важно помнить: если слот на удаленном сервере все еще существует, его (и все связанные с ним слоты синхронизации таблиц) нужно удалить вручную. В противном случае они продолжат удерживать WAL (журналы транзакций), что может привести к переполнению диска.
Также стоит отметить, что если подписка связана с репликационным слотом, команда DROP SUBSCRIPTION
не может выполняться внутри блока транзакции.
Примеры
Удаление подписки:
DROP SUBSCRIPTION mysub;
Совместимость
DROP SUBSCRIPTION
является расширением PostgreSQL.