我目前正在将liquibase与基于SQL的变更集一起使用,并且其中大多数包含INSERT语句。根据文档,这种类型的更新操作不会(通过工具)生成自动回滚语句。
我的问题是(我可能会遗漏一些东西),因为我们可以声明某个变更集可以在数据库事务的上下文中运行,如果在应用变更集期间发生错误,该工具(liquibase)是否可以发出事务回滚对于这个特定的变更集?
我的情况是,当前所有这些脚本都是开发过程的一部分,而这些脚本尚未最终确定,这意味着有人更改了内容,我们从头开始答复它们。如果在2000行插入脚本中SQL中有错误,我希望该工具自动回滚当前事务,而不提交数据库中的更改。
非常感谢任何提示
在更新过程中,liquibase将运行事务中的每个changeSet并在出现任何错误时将其回滚。因此,如果您有一个2000行的插入文件,但在插入过程中途出现错误,则会按预期失败并自动回滚。
不会自动生成的是SQL在提交后“回滚”(在这种情况下为删除)插入。如果在changeSet中指定一个块,则更新成功执行并提交后,您可以稍后运行“ liquibase rollback v2.3”,它将撤消自v2.3标记以来的更改。它不能依赖数据库回滚功能,因为它已经提交。
这可能有点令人困惑,因为在这种情况下,回滚与事务上下文中术语“回滚”的常规数据库使用不同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句