我有两个表
- EMP
- 部门
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。
在删除映射表之前,将它保存一段时间通常是明智的。