Я использую Spring, liquibase с базой данных hsql. Я создаю последовательность для таблицы, скажем, пример таблицы. Последовательность будет создана из liquibase, как показано ниже:
<changeSet id="xx" author="yy" dbms="hsql">
<preConditions onFail="MARK_RAN">
<not>
<sequenceExists sequenceName="example_id_sequence"/>
</not>
</preConditions>
<createSequence sequenceName="example_id_sequence" startValue="${hsql.exampleSequenceCount}" incrementBy="1"/>
</changeSet>
Как вы заметили здесь, startValue для последовательности получено из внешнего кода Java с использованием параметров журнала изменений bean-компонента liquibase.
Первый запуск работает нормально. После вставки некоторых данных в таблицу примера, при перезапуске startValue теперь будет иметь значение max Id + 1 для таблицы, оно возвращается так же для требования.
, поэтому контрольная сумма изменяется иошибка брошена. Я пытался включить предварительные условия, которые также не работали. Есть ли обходной путь для этого, например
Если присутствует последовательность, не проверяйте контрольную сумму и не создавайте новую последовательность