使用liquibase创建列时,如何根据现有列为该列指定值?

时间:2012-06-14 22:30:36

标签: liquibase

我有一个包含两列a和b的现有mysql表。

我现在想在该表中添加一列c。

c应该是可空的,应该具有NULL的默认值,除了列b的值为10的那些行。其中b的值为10,c应该具有值X.

我知道使用SQL执行此操作相当简单,但我想使用liquibase执行此操作,因为liquibase是我们用于架构迁移的内容。

3 个答案:

答案 0 :(得分:18)

你有没有试过这样的东西?

<addColumn tableName="SGW_PRODOTTI_INFO_ATTRIBUTE">
    <column name="AlternativeListPrice" type="double" defaultValue="0.0">
    <constraints nullable="true"/>
    </column>
</addColumn>

答案 1 :(得分:5)

我认为不使用普通sql的最佳解决方案如下:

您可以选择在变更集中使用这两个更改,但一个好的做法是将每个变更分隔为用于liquibase事务/回滚目的的单独变更集。

答案 2 :(得分:1)

如果您要添加列,则

<changeSet author="your-name" id="your-id"> 
    <addColumn tableName="person" >
        <column name="is_active" type="varchar2(1)" defaultValue="Y" />  
    </addColumn>  
</changeSet>

add-column

如果已经添加了列,则需要设置默认值

<changeSet author="your-name" id="your-id">
    <addDefaultValue columnDataType="varchar2(1)" columnName="is_active" defaultValue="Y" tableName="person"/>  
</changeSet>

add-default-value