【发布时间】:2018-09-20 15:46:05
【问题描述】:
我正在使用 Postgres。我有一张旧桌子和一张新桌子。旧表中的记录需要在新表中有相关记录。新表记录将有效地充当新表中记录的父级。
我正在尝试编写一个迁移,其中旧表中的每个“子”将在新表中具有“父”。
OLD TABLE(我添加了一个外键,希望在迁移过程中填充它)
id | name | new_id (FK)
----+------+-------------
1 | 1st |
2 | 2nd |
新表
id | name
----+------
|
我需要做以下事情:
-
SELECT旧表中的所有记录 -
INSERT为每条旧记录和RETURNING id新表中的一条记录 -
UPDATE旧记录的外键值与RETURNING id
有没有办法使用集合查询来完成此任务?还是我需要开始深入研究 Postgres 的特定内容,例如 LOOPs?
【问题讨论】:
-
您可以在 Postgres 中执行此操作。使用示例数据和结果,这个问题会更容易理解。
-
currval() 如果您知道序列名称,lastval() 用于序列中的最后一个插入,在原始行的每个循环中交替选择/插入/更新,或返回 id 方法。
-
@GordonLinoff 我添加了一些简化的表模式。
-
我不太擅长 Postgres,但我想做一些研究。这个页面应该对你有很大帮助。 stackoverflow.com/questions/23382865/…
标签: sql postgresql migration database-migration