检查前置条件和后置条件

问题描述 投票:0回答:2

我看到 liquibase 有 先决条件,但我还想在应用变更集后对其进行验证。

具体用例是检查它没有在数据库中创建更多无效对象,

例如在甲骨文中

SELECT COUNT(*)
FROM USER_OBJECTS O
WHERE O.STATUS = 'INVALID';

这可能吗?

liquibase
2个回答
0
投票

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>

0
投票

您可以使用

changeSetExecuted
前提条件,以确保变更集已正确执行。 为了最后验证
changeSetExecuted
,您可以使用
runOrder
在最后执行验证变更集。 但
runOrder
只需要
first
Last
,所以没有中间运行。 并且
runOrder
在格式化的 SQL 变更日志中不受支持。 这是一个工作示例

© www.soinside.com 2019 - 2024. All rights reserved.