Liquibase 将现有的可为空约束从 true 更改为 false

000*_*000 11 database liquibase

我使用Liquibase更改日志向现有表添加了一列,并将可为空约束设置为 true。

代码:

<changeSet id="10" author="000000">
    <addColumn tableName="NCV_ATTRIBUTE">
        <column name="AlternativeListPrice" type="double" defaultValue="0.0">
        <constraints nullable="true"/>
        </column>
    </addColumn>
</changeSet>
Run Code Online (Sandbox Code Playgroud)

我想在 changeSet 11 中将可空约束从 true 更改为 false。实现此目的的最简单方法是什么?

谢谢。

小智 12

我在这里找到了使用的确切方法。

以下是使用更改日志删除可为空约束的方法:

<changeSet id="11" author="000000">
    <dropNotNullConstraint tableName="NCV_ATTRIBUTE" columnName="AlternativeListPrice" columnDataType="double"/>
</changeSet>
Run Code Online (Sandbox Code Playgroud)

关键字是dropNotNullConstraint

在本例中,如果使用此关键字后跟表名和列名,则可以删除之前设置的可为空约束,并且可为空值更改为 false。


小智 6

仅在确保约束存在(在 Oracle 中)后才运行变更集 -

<changeSet id="111" author="ME">
  <preConditions onFail="MARK_RAN" onError="CONTINUE">
    <sqlCheck expectedResult="N">
      SELECT Nullable
      FROM user_tab_columns
      WHERE table_name = 'table_name'
      AND column_name = 'column_name'
    </sqlCheck>
  </preConditions>
  <dropNotNullConstraint tableName="BULK_REQUEST" columnName="REMARKS"/>
</changeSet>
Run Code Online (Sandbox Code Playgroud)

各种数据库的先决条件可以在这里找到