我有 3 张桌子。
1) SourceTable - 一个包含一些数据的源表
2) DestinationTable - 与源表具有相同架构的目标表。两个表都有类似的数据
3) FKSourceTable - 一个完全不同的表,具有对 SourceTable 的 FK 引用
4) FKDestinationTable - 一个完全不同的表,具有对 DestinationTable 的 FK 引用。与 FKSourceTable 具有相同的架构
现在我的任务是将一些数据从 SourceTable 迁移到 DestinationTable 和 FKSourceTable 到 FKDestinationTable
但是,我无法迁移主键,因为 DestinationTable 可能有自己的记录具有相同的 PK,这可能会造成 PK 违规。
DestinationTable 作为 PK 的自动标识列,当我进行批量插入时,我没有指定 PK 列,因此自动标识将完成其工作。
这意味着 DestionationTable 中的新记录将具有全新的 ID。
我遇到的问题是,将 FKSourceTable 迁移到 FKDestinationTable 时如何维护 FK 引用?当我按如下方式对 DestinationTable 进行批量插入时,我忘记了身份:
INSERT INTO DestionationTable
(Col1, Col2)
SELECT st.Col1, st.Col2
FROM SourceTable st
(DestionationTable 有 3 列:Id、Col1、Col2)
挑战在于我不能使用 SSIS 或任何其他 ETL 解决方案。我需要能够用一个简单的 SQL 脚本来做到这一点。
有没有人有任何想法来解决这个问题?我尝试过使用 OUTPUT INTO 等,但我还没有找到一种方法来保持原始 ID 和新 ID 之间的引用
任何帮助是极大的赞赏
谢谢南顿。