Мы используем Liquibase для управления нашей схемой базы данных в СУБД Sybase ASE.Как говорится в документации Liquibase, наборы изменений всегда должны выполняться внутри одной транзакции, в противном случае , если ошибка возникает на полпути при запуске набора изменений, содержащего несколько операторов, таблица базы данных Liquibasechangelog будет оставлена в недопустимом состоянии (см. тег changeset. .
. Для этого мы запускаем Sybase ASE с параметром ddl in tran
, который, согласно документации ASE, позволяет заключать несколько операторов DDL.внутри одной пользовательской транзакции. Однако позже мы обнаружили, что Liquibase всегда возвращается к автоматической фиксации на ASE (см. метод liquibase.database.core.SybaseDatabase.supportsDDLInTransaction()
, который всегда возвращает false).
Есть ли способ переопределить этот метод (возможно, в классе, производном от liquibase.database.core.SybaseDatabase
, который каким-то образом зарегистрирован в Liquibase), чтобы он возвращал true и, таким образом, удерживал Liquibase от использования автоматической фиксации?