liquibase 根据现有列更新数据

liquibase update data based on existing column

在这里,我是 liquibase 的新手,我有一个场景,我需要向现有 table 添加一个新列,并根据现有列获得此列的值。但是,我能够添加列,但找不到为此列设置默认值的方法。

考虑一下我有一个名为 table_1

的 table
id col1 col2
1 11 22
2 12 33
3 13 44

现在我想在上面的 table 中添加列 col3 并使该列的值与 col2 相同。我期待输出类似

id col1 col2 col3
1 11 22 22
2 12 33 33
3 13 44 44

您已标记 liquibase SQL,您是否在更新日志中使用 SQL 作为首选语言?

我想如果你是,SQL 语句可能有效:

-- liquibase formatted sql

-- changeset user1:1651490946175-1
UPDATE TABLENAME SET col3 = col2;

否则,您可以在 json、yaml.

中使用类似的语法

使用一个变更集添加可为空的列,然后使用第二个变更集更新值。

    <changeSet id="Add col3" author="me">
        <addColumn tableName="table_1">
            <column name="col3" type="int" />
        </addColumn>
    </changeSet>

    <changeSet id="Update column using another column" author="me">
        <update tableName="table_1">
            <column name="col3" valueComputed="col2" />
        </update>
    </changeSet>

Update column data based on another column