Liquibase 前提条件:如何检查列是否为正确的数据类型?

Ben*_*Ben 6 java hibernate teradata liquibase preconditions

我有一个 db upgrade 脚本来更改几列上的一些数据类型。我想做一个preCondition检查,并且ALTER TABLE只在它是 DECIMAL 数据类型时调用,但我希望它被更改为 INTEGER。

无法为此找到预定义的先决条件,也无法编写sqlCheck

hts*_*ame 5

precondition列的dataTypein没有内置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>
Run Code Online (Sandbox Code Playgroud)