ALTER PUBLICATION
ALTER PUBLICATION — изменить определение публикации
Синтаксис
ALTER PUBLICATIONимя
ADDобъект_публикации
[, ...] ALTER PUBLICATIONимя
SETобъект_публикации
[, ...] ALTER PUBLICATIONимя
DROPобъект_публикации
[, ...] ALTER PUBLICATIONимя
SET (параметр_публикации
[=значение
] [, ... ] ) ALTER PUBLICATIONимя
OWNER TO {новый_владелец
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER PUBLICATIONимя
RENAME TOновое_имя
гдеобъект_публикации
может быть следующим: TABLE [ ONLY ]имя_таблицы
[ * ] [ (имя_столбца
[, ... ] ) ] [ WHERE (выражение
) ] [, ... ] TABLES IN SCHEMA {имя_схемы
| CURRENT_SCHEMA } [, ... ]
Описание
Команда ALTER PUBLICATION
может изменять атрибуты публикации.
Первые три формы управляют вхождением таблиц/схем в публикации. Предложение SET
заменяет список таблиц/схем в публикации заданным списком; таблицы/схемы, входившие в публикацию ранее, будут удалены из неё. Предложения ADD
и DROP
добавляют и удаляют таблицы/схемы в публикации соответственно. Заметьте, что при добавлении таблиц/схем в публикацию, на которую уже оформлена подписка, необходимо выполнить ALTER SUBSCRIPTION ... REFRESH PUBLICATION
на стороне подписчика, чтобы это изменение вступило в силу. Также заметьте, что команда DROP TABLES IN SCHEMA
не удаляет относящиеся к заданной схеме таблицы, включённые в публикацию указаниями FOR TABLE
/ADD TABLE
, а с предложением DROP
нельзя использовать предложение WHERE
.
Четвёртая форма этой команды, показанная в сводке синтаксиса, может изменять все свойства публикации, заданные в CREATE PUBLICATION. Свойства, которые не упоминаются в этой команде, сохраняют предыдущие значения.
Остальные формы команды меняют владельца и имя публикации.
Для выполнения ALTER PUBLICATION
необходимо владеть данной публикацией. Чтобы добавить таблицу в публикацию, дополнительно нужно быть владельцем этой таблицы. Для выполнения ADD TABLES IN SCHEMA
и SET TABLES IN SCHEMA
требуется быть суперпользователем. Чтобы сменить владельца, также необходимо быть непосредственным или опосредованным членом новой роли-владельца, а эта роль должна иметь право CREATE
в базе данных. Кроме того, новым владельцем публикации вида FOR ALL TABLES
или FOR TABLES IN SCHEMA
должен быть суперпользователь. Однако суперпользователь может менять владельца публикации вне зависимости от этих ограничений.
Добавление/указание схемы, когда публикация также публикует таблицу со списком столбцом, равно как и обратная операция, не поддерживается.
Параметры
имя
Имя существующей публикации, определение которой изменяется.
имя_таблицы
Имя существующей таблицы. Если перед именем таблицы указано
ONLY
, затрагивается только заданная таблица. БезONLY
затрагивается и заданная таблица, и все её потомки (если таковые есть). После имени таблицы можно добавить необязательное указание*
, чтобы явно обозначить, что должны затрагиваться и все дочерние таблицы.Дополнительно может быть указан список столбцов. За подробностями обратитесь к CREATE PUBLICATION. Заметьте, что оформить одну подписку на несколько публикаций, в которых одна таблица опубликована с разными списками столбцов, нельзя. Подробнее проблемы, возможные при изменении списка столбцов, описаны в Внимание: объединение списков столбцов из нескольких публикаций.
Если указано необязательное предложение
WHERE
, строки, для которыхвыражение
выдаёт false или null, не будут публиковаться. Заметьте, что выражение должно заключаться в круглые скобки. Вычисляетсявыражение
от имени роли, которая применяется для соединения репликации.имя_схемы
Имя существующей схемы.
SET (
параметр_публикации
[=значение
] [, ... ] )Это предложение изменяет параметры публикации, изначально установленные командой CREATE PUBLICATION. За дополнительными сведениями обратитесь к её описанию.
новый_владелец
Имя пользователя, назначаемого новым владельцем публикации.
новое_имя
Новое имя публикации.
Примеры
Изменение публикации, чтобы публиковались только удаления и изменения:
ALTER PUBLICATION noinsert SET (publish = 'update, delete');
Добавление таблиц в публикацию:
ALTER PUBLICATION mypublication ADD TABLE users (user_id, firstname), departments;
Изменение набора столбцов, публикуемых для таблицы:
ALTER PUBLICATION mypublication SET TABLE users (user_id, firstname, lastname), TABLE departments;
Добавление схем marketing
и sales
в публикацию sales_publication
:
ALTER PUBLICATION sales_publication ADD TABLES IN SCHEMA marketing, sales;
Добавление таблиц users
, departments
и схемы production
в публикацию production_publication
:
ALTER PUBLICATION production_publication ADD TABLE users, departments, TABLES IN SCHEMA production;
Совместимость
ALTER PUBLICATION
является расширением Postgres Pro.