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