ALTER PUBLICATION#
ALTER PUBLICATION
ALTER PUBLICATION — изменить определение публикации
Синтаксис
ALTER PUBLICATIONname
ADDpublication_object
[, ...] ALTER PUBLICATIONname
SETpublication_object
[, ...] ALTER PUBLICATIONname
DROPpublication_object
[, ...] ALTER PUBLICATIONname
SET (publication_parameter
[=value
] [, ... ] ) ALTER PUBLICATIONname
OWNER TO {new_owner
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER PUBLICATIONname
RENAME TOnew_name
wherepublication_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.