我看到 liquibase 有 先决条件,但我还想在应用变更集后对其进行验证。
具体用例是检查它没有在数据库中创建更多无效对象,
例如在甲骨文中
SELECT COUNT(*)
FROM USER_OBJECTS O
WHERE O.STATUS = 'INVALID';
这可能吗?
Liquibase 中没有像 postConditions 这样的内置东西。
但是您始终可以使用
sqlCheck
前提条件作为解决方法,例如:
<changeSet id=“foo” author=“bar”>
<!—- do some changes you need —->
</changeSet>
<changeSet id=“foo1” author=“bar”>
<preConditions onFail=“ERROR”>
<sqlCheck expextedResult=“1”>
SELECT COUNT(1)
FROM USER_OBJECTS O
WHERE O.STATUS = 'INVALID';
</sqlCheck>
</preConditions>
<comment>Result from changeSet “foo” verified successfully</comment>
</changeSet>
您可以使用
changeSetExecuted
前提条件,以确保变更集已正确执行。
为了最后验证 changeSetExecuted
,您可以使用 runOrder
在最后执行验证变更集。
但runOrder
只需要first
或Last
,所以没有中间运行。
并且 runOrder
在格式化的 SQL 变更日志中不受支持。
这是一个工作示例