将2个表(有外键关系)中的行移动到另外2个表(有外键关系)中



我有两个表

  1. EMP
  2. 部门

DEPT的结构

<表类> DEPT_ID DNAME tbody><<tr>10账户20管理

不确定为什么要生成新的id,旧的有什么问题?无论如何,您需要跟踪旧id和新id之间的关系。一种方法是创建一个映射表:

CREATE TABLE map_dept_id
( dept_id ... not null primary key
, new_dept_id ... not null unique
);

然后创建这个表的内容为:

INSERT INTO map_dept_id (dept_id, new_dept_id)
SELECT schema.sequence.nextval, dept_id FROM DEPT;

现在您可以在迁移部门时使用此表:

INSERT INTO new_dept (dept_id, dname)
SELECT m.new_dept_id, d.dname||'_'||m.dept_id
FROM map_dept_id m
JOIN dept d
ON m.dept_id = d.dept_id

使用类似的技术将emp的旧dept_id映射到新dept_id。

在删除映射表之前,将它保存一段时间通常是明智的。

相关内容

  • 没有找到相关文章

最新更新