gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:29:49 30 4
gpt4 key购买 nike

我使用的是 Postgres 数据库,为了迁移,我使用的是 Liquibase。我有一个包含以下列的 ORDERS 表:

ID | DATE | NAME | CREATOR | ...

我需要添加一个新列来保存上次修改订单的用户 - 此列应该不可为 null,并且应该具有默认值,即 CREATOR。对于新订单,我可以解决业务逻辑的默认值部分,但是问题是我已经有一个现有订单,我需要在创建新列时设置默认值。现在,我知道我可以设置一个硬编码 default value in 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>

我已经按照文档的建议在三个不同的变更集中完成了此操作

关于java - 如何从 Liquibase 中的现有列添加具有默认值的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35172172/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com