Я написал инструмент для нашего проекта для применения файлов обновлений sql, которые были зафиксированы, к БД. При каждом запуске (при развертывании) он вычисляет список файлов обновлений, которые необходимо применить, и применяет их в транзакции.
Недавно мне стало известно о проблеме: mysql неявно фиксирует транзакцию всякий раз, когда выполняются операторы DDL (например, create). http://dev.mysql.com/doc/refman/5.0/en/implicit-commit.html
Это проблема для меня, так как иногда файл обновления sql содержит несколько операторов, что, как я понимаю, приведет к фиксации транзакции в середине выполнения файла обновления. Это проблема, потому что всякий раз, когда последующее обновление будет неудачным (что происходит время от времени), я хочу иметь возможность откатить транзакцию или, по крайней мере, отследить, какие файлы обновлений были применены (полностью), а какие - нет.
Есть ли способ обойти проблему неявных транзакций? То есть Есть ли способ откатить последовательность операторов DDL при сбое одного из них?
Любые другие предложения, как я могу решить проблему?
Спасибо
Gidi