ALTER SUBSCRIPTION#
ALTER SUBSCRIPTION
ALTER SUBSCRIPTION — изменить определение подписки
Синтаксис
ALTER SUBSCRIPTIONname
CONNECTION 'conninfo
' ALTER SUBSCRIPTIONname
SET PUBLICATIONpublication_name
[, ...] [ WITH (publication_option
[=value
] [, ... ] ) ] ALTER SUBSCRIPTIONname
ADD PUBLICATIONpublication_name
[, ...] [ WITH (publication_option
[=value
] [, ... ] ) ] ALTER SUBSCRIPTIONname
DROP PUBLICATIONpublication_name
[, ...] [ WITH (publication_option
[=value
] [, ... ] ) ] ALTER SUBSCRIPTIONname
REFRESH PUBLICATION [ WITH (refresh_option
[=value
] [, ... ] ) ] ALTER SUBSCRIPTIONname
ENABLE ALTER SUBSCRIPTIONname
DISABLE ALTER SUBSCRIPTIONname
SET (subscription_parameter
[=value
] [, ... ] ) ALTER SUBSCRIPTIONname
SKIP (skip_option
=value
) ALTER SUBSCRIPTIONname
OWNER TO {new_owner
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER SUBSCRIPTIONname
RENAME TOnew_name
Описание
ALTER SUBSCRIPTION
может изменять большинство свойств подписки, которые можно указать в CREATE SUBSCRIPTION.
необходимо владеть подпиской, чтобы использовать ALTER SUBSCRIPTION
.
Чтобы изменить владельца, вы также должны быть прямым или косвенным членом новой владеющей роли. Новый владелец должен быть суперпользователем.
(В настоящее время все владельцы подписок должны быть суперпользователями, поэтому проверки владельца будут обходиться на практике. Но это может измениться в будущем).
При обновлении публикации мы удаляем отношения, которые больше не являются частью публикации, а также удаляем слоты синхронизации таблиц, если они есть. Необходимо удалить эти слоты, чтобы освободить ресурсы, выделенные для подписки на удаленном хосте. Если из-за сбоя в сети или какой-либо другой ошибки 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 PUBLICATION
publication_name
ADD PUBLICATION
publication_name
DROP 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
было изменено.
ENABLE
Включает ранее отключенную подписку, запуская логического рабочего процесса репликации в конце транзакции.
DISABLE
Отключает работающую подписку, останавливая рабочий процесс логической репликации в конце транзакции.
SET (
subscription_parameter
[=value
] [, ... ] )Это предложение изменяет параметры, установленные изначально с помощью CREATE SUBSCRIPTION. Дополнительную информацию см. там. Параметры, которые можно изменить, включают
slot_name
,synchronous_commit
,binary
,streaming
,disable_on_error
иorigin
.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
Новое имя для подписки.
Примеры
Измените публикацию, на которую подписана подписка, на insert_only
:
ALTER SUBSCRIPTION mysub SET PUBLICATION insert_only;
Отключить (остановить) подписку:
ALTER SUBSCRIPTION mysub DISABLE;
Совместимость
ALTER SUBSCRIPTION
- это расширение Tantor SE.