我有一个数据库升级脚本来更改几列上的某些数据类型。我想进行preCondition检查,仅当它是DECIMAL数据类型时才调用ALTER TABLE,但我希望将其更改为INTEGER。

找不到预定义的前提条件,也无法编写sqlCheck

最佳答案

precondition中没有列的dataType的内置liquibase
您可以只检查该列是否存在。如果已经是所需的数据类型,则不会引发任何错误。



您可以在先决条件中使用sqlCheck,它将类似于以下内容:

<preConditions onFail="MARK_RAN">
    <not>
        <sqlCheck expectedResult="DECIMAL">
            SELECT DATA_TYPE
            FROM INFORMATION_SCHEMA.COLUMNS
            WHERE TABLE_NAME = 'your_table_name'
            AND COLUMN_NAME = 'your_column_name'
        </sqlCheck>
    </not>
</preConditions>

10-05 22:06