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

时间:2018-05-01 15:14:11

标签: teradata liquibase alter-table preconditions liquibase-hibernate

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

无法为此找到预定义的前提条件,也无法编写sqlcheck。

1 个答案:

答案 0 :(得分:0)

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>