ALTER SUBSCRIPTION

ALTER SUBSCRIPTION — изменить определение подписки


Синтаксис

ALTER SUBSCRIPTION имя CONNECTION 'строка_подключения'
ALTER SUBSCRIPTION имя SET PUBLICATION имя_публикации [, ...] [ WITH ( параметр_публикации [= значение] [, ... ] ) ]
ALTER SUBSCRIPTION имя ADD PUBLICATION имя_публикации [, ...] [ WITH ( параметр_публикации [= значение] [, ... ] ) ]
ALTER SUBSCRIPTION имя DROP PUBLICATION имя_публикации [, ...] [ WITH ( параметр_публикации [= значение] [, ... ] ) ]
ALTER SUBSCRIPTION имя REFRESH PUBLICATION [ WITH ( параметр_обновления [= значение] [, ... ] ) ]
ALTER SUBSCRIPTION имя ENABLE
ALTER SUBSCRIPTION имя DISABLE
ALTER SUBSCRIPTION имя SET ( параметр_подписки [= значение] [, ... ] )
ALTER SUBSCRIPTION имя OWNER TO { новый_владелец | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER SUBSCRIPTION имя RENAME TO новое_имя

Описание

Команда ALTER SUBSCRIPTION может менять большинство свойств подписки, которые можно указать в команде CREATE SUBSCRIPTION.

Чтобы использовать команду ALTER SUBSCRIPTION, нужно быть владельцем соответствующей подписки. Для смены владельца текущий пользователь также должен быть непосредственным или опосредованным членом новой роли-владельца. Новый владелец должен быть суперпользователем. (В настоящее время все владельцы подписок должны быть суперпользователями, поэтому на практике проверка владельца будет пропущена. Но в будущем это может измениться.)

При обновлении публикации мы удаляем отношения, которые больше не являются частью этой публикации, а также слоты синхронизации этих таблиц, если таковые имеются. Эти слоты нужно удалить, чтобы освободить ресурсы, выделенные для данной подписки на удаленном хосте. Если из-за сбоя в сети или какой-либо другой ошибки QHB не может удалить эти слоты, будет выдано сообщение об ошибке (ERROR). Чтобы выйти из такой ситуации, пользователь должен либо попробовать повторить эту операцию, либо отсоединить слот от подписки и удалить подписку, как описано в DROP SUBSCRIPTION.

Команды ALTER SUBSCRIPTION ... REFRESH PUBLICATION и ALTER SUBSCRIPTION ... {SET|ADD|DROP} PUBLICATION ... с параметром refresh, равным true, нельзя выполнить в блоке транзакции.


Параметры

имя

Имя подписки, свойства которой подлежат изменению.

CONNECTION 'строка_подключения'

Это предложение изменяет свойство соединения, первоначально заданное командой CREATE SUBSCRIPTION. Дополнительную информацию см. на справочной странице этой команды.

SET PUBLICATION имя_публикации
ADD PUBLICATION имя_публикации
DROP PUBLICATION имя_публикации

Изменяет список публикаций, на которые оформлена подписка. SET заменяет весь список публикаций на новый, ADD добавляет в него новые публикации, а DROP удаляет из него публикации. Дополнительную информацию см. на справочной странице команды CREATE SUBSCRIPTION. По умолчанию эта команда также будет действовать как REFRESH PUBLICATION.

В указании параметр_публикации задаются дополнительные свойства этой операции. Поддерживаемые параметры:

  • refresh (boolean)
    При значении false команда не будет пытаться обновить информацию о таблицах. После этого REFRESH PUBLICATION следует выполнять отдельно. Значение по умолчанию равно true.

Кроме того, здесь можно задавать параметры обновления, перечисленные в описании REFRESH PUBLICATION, чтобы управлять неявной операцией обновления.

REFRESH PUBLICATION

Считывает недостающую информацию о таблицах с публикующего сервера. Это приводит к запуску репликации таблиц, добавленных в публикации, на которые оформлена подписка, после последнего вызова REFRESH PUBLICATION или CREATE SUBSCRIPTION.

В указании параметр_обновления задаются дополнительные свойства операции обновления. Поддерживаемые параметры:

  • copy_data (boolean)
    Указывает, следует ли копировать существующие данные в публикациях, на которые оформляется подписка, после запуска репликации. Значение по умолчанию равно true. (Таблицы, на которые уже оформлена подписка, не копируются.)

ENABLE

Включает ранее выключенную подписку, запуская процесс логической репликации в конце транзакции.

DISABLE

Выключает запущенную подписку, останавливая процесс логической репликации в конце транзакции.

SET ( параметр_подписки [= значение] [, ... ] )

Это предложение изменяет параметры, первоначально заданные с помощью команды CREATE SUBSCRIPTION. Допустимые параметры: slot_name, synchronous_commit, binary и streaming.

новый_владелец

Имя пользователя нового владельца подписки.

новое_имя

Новое имя подписки.


Примеры

Изменение подписки путем подписывания на публикацию insert_only:

ALTER SUBSCRIPTION mysub SET PUBLICATION insert_only;

Выключение (остановка) подписки:

ALTER SUBSCRIPTION mysub DISABLE;

Совместимость

Команда ALTER SUBSCRIPTION является расширением QHB.


См. также

CREATE SUBSCRIPTION, DROP SUBSCRIPTION, CREATE PUBLICATION, ALTER PUBLICATION