ALTER PUBLICATION — изменение определения публикации
ALTER PUBLICATIONnameADDpublication_object[, ...] ALTER PUBLICATIONnameSETpublication_object[, ...] ALTER PUBLICATIONnameDROPpublication_object[, ...] ALTER PUBLICATIONnameSET (publication_parameter[=value] [, ... ] ) ALTER PUBLICATIONnameOWNER TO {new_owner| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER PUBLICATIONnameRENAME TOnew_nameгдеpublication_objectможет быть одним из: TABLE [ ONLY ]table_name[ * ] [ (column_name[, ... ] ) ] [ WHERE (expression) ] [, ... ] TABLES IN SCHEMA {schema_name| 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 в публикацию необходимо, чтобы
вызывающий пользователь был суперпользователем.
Чтобы изменить владельца, вы должны иметь возможность выполнить SET ROLE для
новой роли-владельца, и эта роль должна иметь право CREATE
в базе данных.
Кроме того, новый владелец публикации с параметрами
FOR ALL TABLES
или FOR TABLES IN SCHEMA
должен быть суперпользователем. Однако суперпользователь может
изменить владельца публикации независимо от этих ограничений.
Добавление/установка любой схемы, когда публикация также публикует таблицу с списком столбцов, и наоборот, не поддерживается.
nameИмя существующей публикации, определение которой нужно изменить.
table_name
Имя существующей таблицы. Если перед именем таблицы указано ONLY,
затрагивается только эта таблица. Если ONLY не указано,
затрагиваются таблица и все её дочерние таблицы (если есть).
Дополнительно после имени таблицы можно указать *,
чтобы явно обозначить, что дочерние таблицы включаются.
Дополнительно может быть указан список столбцов. Подробности см. в CREATE PUBLICATION. Обратите внимание, что подписка, имеющая несколько публикаций, в которых одна и та же таблица опубликована с разными списками столбцов, не поддерживается. Подробности о потенциальных проблемах при изменении списков столбцов см. в Внимание: объединение списков столбцов из нескольких публикаций.
Если указано необязательное предложение WHERE, строки,
для которых expression
вычисляется в false или null, публиковаться не будут. Обратите внимание, что вокруг выражения
требуются круглые скобки. Выражение
expression вычисляется с ролью,
используемой для соединения репликации.
schema_nameИмя существующей схемы.
SET ( publication_parameter [= value] [, ... ] )Это предложение изменяет параметры публикации, изначально заданные командой CREATE PUBLICATION. Подробности см. там.
new_ownerИмя пользователя нового владельца публикации.
new_nameНовое имя для публикации.
Изменить публикацию так, чтобы она публиковала только удаления и обновления:
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 является расширением
Digital Q.DataBase.