Sha*_*ram 3 java database liquibase
我正在寻找有关何时preConditions在 Liquibase 中使用的最佳实践changeSet。我理解这样一个事实,即它有助于检查数据库的现有状态,然后应用更改。如果我要从一开始就使用 Liquibase 并且所有更改都将通过 Liquibase 完成,这changeSet不足以检查/验证现有状态吗?写作preConditions在这种情况下,在我看来更加多余。我一直无法找到任何关于此的好文件。
在我的用例中,我将使用 Liquibase 进行数据库架构更改 + 在几个表中添加元数据。我看到了一些 db 模式更改查询的示例,例如添加表、列等preConditions已被使用的地方。但是在正常的插入、更新、删除查询方面并没有看到太多。preConditions为此类数据操作查询编写代码也是一种好习惯吗?有没有关于这方面的好文档?
是的- 你应该写先决条件。在每个变更集上。总是。您的变更集应该是原子的,因此为它们编写前提条件根本不难。只需要一点自制力。
否- changeSet id 不足以检查/验证现有状态。在理想的世界中,这可能就足够了,一切都运行得非常顺畅,没有错误,也没有人用脏手弄乱数据库。或者有人可以在你的databaseChangeLog和理想流程中间插入一些其他的changeSet,仅基于changeSet的顺序和身份就会被破坏。
但是我们的世界并不理想,所以没有,changeSet的ID是不够的。你需要先决条件。
另外,如果您想了解有关如何确定变更集标识的更多信息,请查看此问题。
要回答有关在执行插入、更新和删除查询之前检查数据的问题的第二部分:
你总是可以使用<sqlCheck>标签。
<changeSet id="foo" author="bar">
<preConditions onFail="MARK_RAN">
<sqlCheck expectedResult="0">
SELECT COUNT(*) FROM user WHERE full_name='John Doe';
</sqlCheck>
</preConditions>
<sql>
<!-- your custom SQL query here which modifies data somehow -->
</sql>
</changeSet>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3881 次 |
| 最近记录: |