20

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

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

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

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

4

3 回答 3

41

你已经尝试过这样的事情了吗?

<addColumn tableName="SGW_PRODOTTI_INFO_ATTRIBUTE">
    <column name="AlternativeListPrice" type="double" defaultValue="0.0">
    <constraints nullable="true"/>
    </column>
</addColumn>
于 2012-12-19T09:27:56.447 回答
6

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

您可以选择在变更集中同时使用这两种变更,但一个好的做法是通过单独的变更集将每一项分开,以用于 liquibase 事务/回滚目的。

于 2014-02-06T13:27:13.687 回答
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>

添加默认值

于 2021-06-21T11:00:41.323 回答