如何从Liquibase中的现有列添加具有默认值的新列

我正在使用Postgres DB,对于迁移,我正在使用Liquibase。我有一个ORDERS表,其中包含以下列:

ID | DATE | NAME | CREATOR | ...

我需要添加一个新列,该列将容纳上次修改订单的用户-该列应不可为空,并且应具有默认值CREATOR。对于新订单,我可以解决业务逻辑的默认值部分,

问题是我已经有一个现有订单,因此在创建新列时需要设置默认值。现在,我知道我可以在Liquibase中设置一个硬编码的默认值

-但是有一种方法可以基于该表的其他列(对于每个实体)添加默认值。

回答:

由于这里没有人回答,因此我发布了处理方法:

<changeSet id="Add MODIFY_USER_ID to ORDERS" author="Noam">

<addColumn tableName="ORDERS">

<column name="MODIFY_USER_ID" type="BIGINT">

<constraints foreignKeyName="ORDERS_MODIFY_FK" referencedTableName="USERS" referencedColumnNames="ID"/>

</column>

</addColumn>

</changeSet>

<changeSet id="update the new MODIFY_USER_ID column to get the CREATOR" author="Noam">

<sql>update ORDERS set MODIFY_USER_ID = CREATOR</sql>

</changeSet>

<changeSet id="Add not nullable constraint on MODIFY_USER_ID column" author="Noam">

<addNotNullConstraint tableName="ORDERS" columnName="MODIFY_USER_ID" columnDataType="BIGINT"/>

</changeSet>

正如文档建议的那样,我已经在三个不同的变更集中完成了此操作

以上是 如何从Liquibase中的现有列添加具有默认值的新列 的全部内容, 来源链接: utcz.com/qa/429778.html

回到顶部