sql迁移-将数据移动到另一个表并获取主键

bakd9h0s  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(261)

问题

假设一张这样的table:

CREATE TABLE parent (
  parent_id INTEGER PRIMARY KEY,
  col1 REAL,
  col2 REAL
);

然后系统的要求发生了变化 parent 我需要得到信息 col1 以及 col2 在两个不同的时间点。一种可能的设计是为用户创建一个单独的表 col1 以及 col2 :

CREATE TABLE child (
  child_id INTEGER PRIMARY KEY,
  col1 REAL,
  col2 REAL
);

CREATE TABLE parent (
  parent_id INTEGER PRIMARY KEY,
  current_child INTEGER,
  previous_child INTEGER,
  FOREIGN KEY (current_child) REFERENCES child (child_id),
  FOREIGN KEY (previous_child) REFERENCES child (child_id)
);

问题

有没有一种方法可以创建一个迁移sql脚本来从原始数据库中移动数据 parent 表到 child 并将正确的外键设置为 current_child ? previous_child 一开始可以保持空的,这不是问题。
我还不想把柱子移走 col1 以及 col2parent .
我避免使用其他语言(比如python)中的辅助脚本来简化迁移过程。
有更好的设计方案吗?
我可以简单地添加两个新列 previous_col1 以及 previous_col2 ,但我在真实场景中有更多的列。
注:知道我使用的是sqlite可能是相关的。

更新

@felix.leg问了一个很好的问题,我注意到我一直坚持对两个表都使用自动生成的pk值的想法。事实是 child_id 可以从定义 parent_id :
current_child = 2 * parent_id - 1 previous_child = 2 * parent_id 通过这种方法,我相信可以编写一个sql迁移脚本来创建新表、移动数据和设置正确的外键值。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题