我有一个包含两列a和b的现有mysql表。
我现在想在该表中添加一列c。
c应该是可空的,应该具有NULL的默认值,除了列b的值为10的那些行。其中b的值为10,c应该具有值X.
我知道使用SQL执行此操作相当简单,但我想使用liquibase执行此操作,因为liquibase是我们用于架构迁移的内容。
答案 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>
如果已经添加了列,则需要设置默认值
<changeSet author="your-name" id="your-id">
<addDefaultValue columnDataType="varchar2(1)" columnName="is_active" defaultValue="Y" tableName="person"/>
</changeSet>