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]] +### Дополнительные материалы +- +### Дочерние заметки +