У меня есть набор изменений для создания индекса.как воссоздать индекс, если он уже существует с Liquibase
<changeSet author="hilland" id="x-NC-U-y" runOnChange="true">
<createIndex indexName="NC-U-y" tableName="x" unique="true">
<column name="y"/>
</createIndex>
<rollback>
<dropIndex .../>
</rollback>
<modifySql>
<append value=" INCLUDE ([a],[b]) WITH (DATA_COMPRESSION=page)"/>
</modifySql>
</changeSet>
Проблема заключается в том, что старая версии индекса могущества существует (он будет на некоторых целях (Dev сервера, с более старой версией этого индекса, не включает в себя), не будет на других (например, свежие развернуть в пустую базу данных).
есть ли лучший способ решить эту проблему, так что сценарий становится универсальным, чем включать префикс, который говорит
<sql>IF select {sys.indexes.stuff} is not null {drop the index}</sql>?
в идеале было бы предварительным условие для раскрывающегося если существует e xisting index, чтобы его можно было воссоздать, но я не думаю, что это можно сделать.
Каков наилучший способ справиться с этой ситуацией?
альтернативное решение, которое, как я думал, будет иметь отдельный changest «если индекс v1 существует, отбросьте его», тогда у вас будет отдельный набор изменений v2, но тогда это будет делать откаты.
Я понимаю, что условие выполнения изменений для набора изменений делает откаты жестким, но единственный откат, с которым я связан в этом случае, относится к пустой базе и из нее, хотя шаблон, который легко переносит откат к предыдущей версии, добро пожаловать также.
2 вопроса здесь; 1) Я бы очень * тщательно перешел из моей нынешней структуры без этого и уже развернутых индексов, в новый журнал изменений с этим защитником, поскольку простое добавление этого набора изменений приведет к тому, что он будет выполнять и удалять индекс без последующей обработки выполненный набор изменений для его повторного запуска. вторая проблема, если бы я захотел изменить уже развернутый индекс, как эта команда изменений будет снова реализована? Мой текущий пользовательский sql выполняет drop if и только если (индекс существует, и я собираюсь создать его новую версию) –