Публикация
Эта страница переведена при помощи нейросети GigaChat.
Публикация может быть определена для любой основной физической репликации. Узел, на котором определяется публикация, называется издателем. Публикация представляет собой набор изменений, генерируемых из таблицы или группы таблиц, и также может называться набором изменений или набором репликаций. Каждая публикация существует только в одной базе данных.
Публикации отличаются от схем и не влияют на то, как осуществляется доступ к таблице. Каждую таблицу можно добавлять в несколько публикаций при необходимости. В настоящее время публикации могут содержать только таблицы и все таблицы в схеме. Объекты должны добавляться явно, за исключением случаев, когда создается публикация для ALL TABLES.
Публикации могут выбирать ограничение изменений, которые они производят для любой комбинации INSERT, UPDATE, DELETE и TRUNCATE, аналогично тому, как триггеры срабатывают при определенных типах событий. По умолчанию реплицируются все типы операций. Эти спецификации публикации применяются только к операциям DML, они не влияют на начальную синхронизацию данных копирования. Фильтры строк не имеют никакого эффекта для TRUNCATE. Смотрите раздел «Фильтры строк».
Опубликованная таблица должна иметь настроенный «идентификатор реплики», чтобы иметь возможность реплицировать операции UPDATE и DELETE, чтобы на стороне подписчика можно было идентифицировать соответствующие строки для обновления или удаления. По умолчанию это первичный ключ, если таковой имеется. Другой уникальный индекс (с определенными дополнительными требованиями) также может быть установлен в качестве идентификатора реплики. Если в таблице нет подходящего ключа, то для идентификатора реплики можно установить значение «полный», что означает, что вся строка становится ключом. Однако это очень неэффективно и должно использоваться только в качестве запасного варианта, если невозможно найти другое решение. Если на стороне издателя установлен идентификатор реплики, отличный от «полного», на стороне подписчика также должен быть установлен идентификатор реплики, содержащий столько же или меньше столбцов. Подробнее о том, как установить идентификатор реплики, читайте в разделе REPLICA IDENTITY. Если таблица без идентификатора реплики добавляется в публикацию, которая реплицирует операции UPDATE или DELETE, последующие операции UPDATE или DELETE вызовут ошибку в издателе. Операции INSERT могут выполняться независимо от идентификатора реплики.
Каждая публикация может иметь несколько подписчиков.
Публикация создается с использованием команды CREATE PUBLICATION, и позже ее можно изменить или удалить с помощью соответствующих команд.
Отдельные таблицы могут быть добавлены и удалены динамически с использованием ALTER PUBLICATION. Обе операции ADD TABLE и DROP TABLE являются транзакционными, поэтому таблица начнет или прекратит репликацию в нужный момент после фиксации транзакции.