From 756ef88701a130363f370e4e9654385dbca8990b Mon Sep 17 00:00:00 2001 From: Struchkov Mark Date: Fri, 11 Oct 2024 02:01:18 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20VIEW=20=D0=B2=20Liquibase.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dev/database/Управление VIEW в Liquibase.md | 83 +++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 dev/database/Управление VIEW в Liquibase.md diff --git a/dev/database/Управление VIEW в Liquibase.md b/dev/database/Управление VIEW в Liquibase.md new file mode 100644 index 00000000..13466f7d --- /dev/null +++ b/dev/database/Управление VIEW в Liquibase.md @@ -0,0 +1,83 @@ +--- +aliases: +tags: + - maturity/🌱 +date: "[[2023-11-02]]" +zero-link: +parents: +linked: +--- +## Проблема +==При создании VIEW в Liquibase возникают проблемы с её поддержкой, поскольку она часто изменяется, особенно когда меняется исходная таблица, используемая вьюхой.== Проблемы усложняются, если к одной таблице привязано несколько вьюх. + +После нескольких изменений становится сложно находить актуальный скрипт создания VIEW для его обновления, так как изменения могут быть разбросаны по нескольким файлам или версиям. Например, изменения в логике могут быть внесены в один файл, а изменения в структуре — в другой, что затрудняет сборку актуальной версии скрипта. +## Решение +Для решения этой проблемы все VIEW выносятся в отдельный changeLog файл. Этот changeLog файл всегда указывается в конце master changeLog, так как вьюхи создаются после создания всех необходимых таблиц и данных в базе, чтобы обеспечить их корректность. + +Пример master changeLog файла: + +```xml + + + + + + + + + +``` + +В changeLog файле для создания вьюх необходимо придерживаться следующего порядка: +- Сначала идет changeSet, который удаляет вьюху, если она уже существует. +- Затем идет changeSet, который создает новую вьюху. + +Важным здесь является указывание следующий параметров changeSet-а: +- `runAlways="true"` — указывает Liquibase всегда выполнять этот changeSet, даже если он был уже выполнен ранее. Это особенно полезно, когда необходимо поддерживать актуальность данных вьюхи после каждого изменения. +- `runOnChange="true"` — указывает Liquibase игнорировать несовпадение контрольной суммы данного changeSet-а. Это важно, когда вносятся изменения в структуру вьюхи, и необходимо обновить её без возникновения ошибок из-за изменения контрольной суммы. + +Пример changeSet-ов. + +```xml + + + + + + + + + + + + + + + + + ...SQL FOR CREATE VIEW... + + + +``` + +Таким образом, у нас появляется единое место, которое содержит актуальные структуры наших VIEW. +*** +## Мета информация +**Область**:: [[../../meta/zero/00 Базы Данных|00 Базы Данных]] +**Родитель**:: [[Liquibase]] +**Источник**:: +**Автор**:: +**Создана**:: [[2024-11-02]] +### Дополнительные материалы +- +### Дочерние заметки +