gpt4 book ai didi

sql - Liquibase for/for 每个操作(迁移表数据)

转载 作者:行者123 更新时间:2023-12-04 13:45:51 25 4
gpt4 key购买 nike

我正在使用 Liquibase,我需要在一个表中插入数据,具体取决于另一个表中的条目(创建外键引用)

Table: Entities (currently empty)
PK id
INT data

Table: Existing_table (contains data)
PK id
... data
FK entities_id (references Entities.id)

对于 Existing_table 中的每个条目我需要在 Entities 中插入一个值并更新 entities_idExisting_table ,使用创建的 Entities.id key .

我怎样才能做到这一点?

最佳答案

找不到创建参数化循环的方法,因此使用了一个临时列来存储引用 ID。

<changeSet id="add temp_column to Entities" author="">
<addColumn tableName="Entities">
<column name="temp_id" type="BIGINT"></column>
</addColumn>
</changeSet>

<changeSet author="" id="insert Existing_table keys into Entities">
<sql>
INSERT INTO Entities(type_id, temp_id)
select 1, id
from Existing_table;
</sql>
</changeSet>

<changeSet author="" id="insert entity keys into Existing_table">
<sql>
UPDATE Existing_table d set entity_id = ent.id
FROM (select id, temp_id
from Entities) ent
where ent.temp_id = d.id;
</sql>
</changeSet>


<changeSet id="drop temp_column to Entities" author="">
<dropColumn tableName="Entities"
columnName="temp_id"/>
</changeSet>



<changeSet author="" id="addNotNullConstraint Existing_table-Entities">
<addNotNullConstraint columnDataType="BIGINT"
columnName="entity_id"
tableName="Existing_table"/>
</changeSet>

关于sql - Liquibase for/for 每个操作(迁移表数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34905691/

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