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

Aml*_*Aml 16 liquibase

我有一个现有的mysql表,有两列a和b.

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

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

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

Wal*_*ini 25

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

<addColumn tableName="SGW_PRODOTTI_INFO_ATTRIBUTE">
    <column name="AlternativeListPrice" type="double" defaultValue="0.0">
    <constraints nullable="true"/>
    </column>
</addColumn>
Run Code Online (Sandbox Code Playgroud)


Min*_*now 6

如果您要添加列,那么

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

添加列

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

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

添加默认值


rod*_*tes 5

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

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