ALTER PUBLICATION#
ALTER PUBLICATION
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_namewherepublication_objectis one of: 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, то строки, для которых выражениевыражениеоценивается как false или null, не будут опубликованы. Обратите внимание, что вокруг выражения требуются скобки. Выражениевыражениеоценивается с учетом роли, используемой для соединения репликации.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 - это расширение Tantor BE.