---
aliases:
tags:
- зрелость/🌱
date: "[[2023-11-02]]"
zero-link:
- "[[00 Разработка]]"
parents:
- "[[Liquibase]]"
linked:
---
## Проблема
При создании VIEW в Liquibase способом аналогичным таблице возникает проблема поддержки этой VIEW, так как она может часто меняться. Также будет проблема, когда меняется исходная таблица, которую использует вьюха. Еще больше проблем, если к одной таблице подвязано N вьюх. Через пару изменений становится очень сложно находить актуальный скрипт создания VIEW, чтобы его изменить.
## Решение
Для решений этой проблемы все VIEW выносятся в отдельный changeLog файл. Этот changeLog файл всегда будет в конце списка в master changeLog-файле, потому что вьюхи необходимо создавать по уже созданным актуальным базам данных.
Пример master changeLog файла.
```xml
```
При этом в chageLog файле для создания вьюх необходимо поддерживать следующий порядок.
- Сначала идет changeSet, который удаляет вьюху, если она уже существует
- Потом идет changeSet, который создает новую вьюху.
Важным здесь является указывание следующий параметров changeSet-а:
- `runAlways="true"` - говорит Liquibase всегда выполнять этот changeSet, даже если он был уже выполнен ранее.
- `runOnChange="true"` - говорит Liquibase игнорировать несовпадение чек-суммы данного changeSet-а.
Пример changeSet-ов.
```xml
...SQL FOR CREATE VIEW...
```
Таким образом у нас появляется единое место, которое содержит актуальные структуры наших VIEW.