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
.
Чтобы переименовать подписку или изменить владельца, у вас должны быть
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 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
было изменено.См. 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.