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, только суперпользователи могут её изменять.
При обновлении публикации мы удаляем отношения, которые больше не являются частью публикации, а также удаляем слоты синхронизации таблиц, если они есть. Необходимо удалить эти слоты, чтобы освободить ресурсы, выделенные для подписки на удалённом хосте. Если из-за сетевого сбоя или другой ошибки Digital Q.DataBase не может удалить слоты, будет сообщена ошибка. Чтобы продолжить в этой ситуации, пользователь должен либо повторить операцию, либо отвязать слот от подписки и удалить подписку, как описано в DROP SUBSCRIPTION.
Команды ALTER SUBSCRIPTION ... REFRESH PUBLICATION,
ALTER SUBSCRIPTION ... {SET|ADD|DROP} PUBLICATION ...
с опцией refresh, установленной в true, и
ALTER SUBSCRIPTION ... SET (failover = true|false)
не могут быть выполнены внутри блока транзакции.
Команды ALTER SUBSCRIPTION ... REFRESH PUBLICATION и
ALTER SUBSCRIPTION ... {SET|ADD|DROP} PUBLICATION ...
с опцией refresh, установленной в true, также не могут
быть выполнены, когда у подписки включена поддержка
two_phase
commit, если только
copy_data
не равно false. См. столбец subtwophasestate
в pg_subscription,
чтобы узнать фактическое состояние двухфазной фиксации.
name #Имя подписки, свойства которой нужно изменить.
CONNECTION 'conninfo' #Это предложение заменяет строку подключения, изначально установленную командой CREATE SUBSCRIPTION. Дополнительную информацию см. там.
SET PUBLICATION publication_nameADD PUBLICATION publication_nameDROP PUBLICATION publication_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 и
failover.
Только суперпользователь может установить password_required = false.
При изменении параметра
slot_name,
значения свойств failover и two_phase указанного слота
могут отличаться от соответствующих параметров подписки
failover и
two_phase.
При создании слота убедитесь, что свойства слота failover и two_phase
соответствуют соответствующим параметрам подписки.
В противном случае слот на издателе может вести себя не так, как ожидается от этих
опций подписки: например, слот на издателе может синхронизироваться со стенд-бай,
даже если опция подписки
failover
отключена, или может быть отключён от синхронизации,
даже если опция подписки
failover
включена.
SKIP ( skip_option = value ) #
Пропускает применение всех изменений удалённой транзакции. Если входящие данные
нарушают какие-либо ограничения, логическая репликация остановится до их
разрешения. Используя команду ALTER SUBSCRIPTION ... SKIP,
процесс логической репликации пропускает все изменения данных в
транзакции. Эта опция не влияет на транзакции, которые
уже подготовлены (prepared) при включении
two_phase
на стороне подписчика.
После того как процесс логической репликации успешно пропустит транзакцию или
завершит транзакцию, LSN (хранится в
pg_subscription.subskiplsn)
очищается. См. Раздел 3.14.6 для
подробностей о конфликтах логической репликации.
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 является расширением
Digital Q.DataBase.