У меня есть куча sql-скриптов, которые создают/отбрасывают последовательности, пользователей и другие объекты. Я запускаю эти скрипты через Liquibase, но они терпят неудачу, потому что оракул жалуется, когда я пытаюсь отказаться от существующей последовательности или создать существующего пользователя.Предотвращение ошибки при отбрасывании не существующих последовательностей, создание существующих пользователей
Есть ли способ оракула предотвратить ошибки?
Нечто подобное
Создать пользователя/последовательность, если не существует
отброшенных пользователя/Secuence если существует
Насколько я знаю, у меня есть эти варианты:
- Написать сценарий plsql
- Используйте контексты ликбазы.
- Используйте предпосылки linibase, но это будет означать слишком много работы.
Любые мысли и идеи будут очень признательны.
Я считал предварительные условия, но остается одно сомнение: если у меня есть N, создайте инструкции последовательности, я должен создать равное количество наборов изменений? – Tom
Да, вы должны. ChangeSets пытаются быть транзакционными, но базы данных часто автоматически фиксируются на вызовах DDL, таких как создание последовательности. Таблица базы данных, которую Liquibase использует для отслеживания того, что changeSets запускала, просто отслеживает все выполняемые переменные, поэтому, если у вас есть 15 запросов на создание последовательности в одном наборе changeSet, и по какой-то причине восьмой из них выдает ошибку, обновление Liquibase не будет выполнено на из-за этой ошибки, и с этого момента changeSet всегда будет терпеть неудачу, потому что первая последовательность уже существует. Таким образом, лучший подход заключается в том, чтобы иметь один вызов DDL для changeSet. –
синтаксис для Liquibase 3.4.2 изменился, атрибут name теперь является "sequenceName" – chrismarx