ALTER SUBSCRIPTION#
ALTER SUBSCRIPTION
ALTER SUBSCRIPTION — изменить определение подписки
Синтаксис
ALTER SUBSCRIPTIONnameCONNECTION 'conninfo' ALTER SUBSCRIPTIONnameSET PUBLICATIONpublication_name[, ...] [ WITH (publication_option[=value] [, ... ] ) ] ALTER SUBSCRIPTIONnameADD PUBLICATIONpublication_name[, ...] [ WITH (publication_option[=value] [, ... ] ) ] ALTER SUBSCRIPTIONnameDROP PUBLICATIONpublication_name[, ...] [ WITH (publication_option[=value] [, ... ] ) ] ALTER SUBSCRIPTIONnameREFRESH PUBLICATION [ WITH (refresh_option[=value] [, ... ] ) ] ALTER SUBSCRIPTIONnameENABLE ALTER SUBSCRIPTIONnameDISABLE ALTER SUBSCRIPTIONnameSET (subscription_parameter[=value] [, ... ] ) ALTER SUBSCRIPTIONnameSKIP (skip_option=value) ALTER SUBSCRIPTIONnameOWNER TO {new_owner| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER SUBSCRIPTIONnameRENAME TOnew_name
Описание
ALTER SUBSCRIPTION может изменять большинство свойств подписки, которые можно указать в CREATE SUBSCRIPTION.
Вы должны владеть подпиской, чтобы использовать ALTER SUBSCRIPTION.
Чтобы переименовать подписку или изменить владельца, у вас должны быть
CREATE права на базу данных. Кроме того,
чтобы изменить владельца, вы должны иметь возможность SET ROLE на
новую роль владельца. Если у подписки установлено
password_required=false, только суперпользователи могут её изменять.
При обновлении публикации мы удаляем отношения, которые больше не являются частью публикации, а также удаляем слоты синхронизации таблиц, если они есть. Необходимо удалить эти слоты, чтобы освободить ресурсы, выделенные для подписки на удаленном хосте. Если из-за сбоя в сети или какой-либо другой ошибки Tantor SE не может удалить слоты, будет выдана ошибка. Чтобы продолжить в этой ситуации, пользователю необходимо повторить операцию или отключить слот от подписки и удалить подписку, как объясняется в DROP SUBSCRIPTION.
Команды ALTER SUBSCRIPTION ... REFRESH PUBLICATION и
ALTER SUBSCRIPTION ... {SET|ADD|DROP} PUBLICATION ...
с опцией refresh как true не могут быть
выполнены внутри блока транзакции.
Эти команды также не могут быть выполнены, когда у подписки включен
two_phase
коммит, если только
copy_data
не является false. См. столбец subtwophasestate
в pg_subscription,
чтобы узнать фактическое состояние двухфазного коммита.
Параметры
nameИмя подписки, свойства которой требуется изменить.
CONNECTION 'conninfo'Этот раздел заменяет строку подключения, которая была изначально установлена с помощью CREATE SUBSCRIPTION. Дополнительную информацию смотрите там.
SET PUBLICATIONpublication_nameADD PUBLICATIONpublication_nameDROP PUBLICATIONpublication_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определяет дополнительные параметры для операции обновления. Поддерживаемые параметры:copy_data(boolean)Определяет, нужно ли копировать существующие данные в публикациях, на которые подписываются при запуске репликации. По умолчанию
true.Ранее подписанные таблицы не копируются, даже если предложение фильтрации строк таблицы в
WHEREбыло изменено.См. Notes для подробностей о том, как
copy_data = trueможет взаимодействовать с параметромorigin.См. параметр
binaryкомандыCREATE SUBSCRIPTIONдля получения подробной информации о копировании существующих данных в бинарном формате.
ENABLEВключает ранее отключенную подписку, запуская логического рабочего процесса репликации в конце транзакции.
DISABLEОтключает работающую подписку, останавливая рабочий процесс логической репликации в конце транзакции.
SET (subscription_parameter[=value] [, ... ] )Этот пункт изменяет параметры, изначально установленные CREATE SUBSCRIPTION. См. там для получения дополнительной информации. Параметры, которые можно изменить:
slot_name,synchronous_commit,binary,streaming,disable_on_error,password_required,run_as_owner, иorigin. Только суперпользователь может установитьpassword_required = false.SKIP (skip_option=value)Пропускает применение всех изменений удаленной транзакции. Если входящие данные нарушают какие-либо ограничения, логическая репликация остановится до тех пор, пока это не будет решено. Используя команду
ALTER SUBSCRIPTION ... SKIP, рабочий процесс логической репликации пропускает все изменения модификации данных в рамках транзакции. Этот параметр не влияет на транзакции, которые уже подготовлены путем включенияtwo_phaseна подписчике. После того как рабочий процесс логической репликации успешно пропустит транзакцию или завершит транзакцию, LSN (сохраненный вpg_subscription.subskiplsn) очищается. Подробности о конфликтах логической репликации см. в Раздел 30.5.skip_optionопределяет параметры для данной операции. Поддерживается только одна опция:lsn(pg_lsn)Указывает конечный LSN удаленной транзакции, изменения которой должны быть прне указаны рабочим процессом логической репликации. Конечный LSN - это LSN, на котором транзакция либо коммитится, либо подготавливается. Пропуск отдельных подтранзакций не поддерживается. Установка значения
NONEсбрасывает LSN.
new_ownerИмя пользователя нового владельца подписки.
new_nameНовое имя для подписки.
При указании параметра типа boolean, часть
= value
может быть опущена, что эквивалентно
указанию TRUE.
Примеры
Измените публикацию, на которую подписана подписка, на insert_only:
ALTER SUBSCRIPTION mysub SET PUBLICATION insert_only;
Отключить (остановить) подписку:
ALTER SUBSCRIPTION mysub DISABLE;
Совместимость
ALTER SUBSCRIPTION - это расширение Tantor SE.