ALTER PUBLICATION#

ALTER PUBLICATION

ALTER PUBLICATION

ALTER PUBLICATION — изменить определение публикации

Синтаксис

ALTER PUBLICATION name ADD publication_object [, ...]
ALTER PUBLICATION name SET publication_object [, ...]
ALTER PUBLICATION name DROP publication_object [, ...]
ALTER PUBLICATION name SET ( publication_parameter [= value] [, ... ] )
ALTER PUBLICATION name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER PUBLICATION name RENAME TO new_name

where publication_object is 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 требуется, чтобы пользователь, вызывающий команду, был суперпользователем. Чтобы изменить владельца, вы также должны быть прямым или косвенным членом новой роли-владельца. Новый владелец должен иметь привилегию 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 SE.