【发布时间】:2021-12-23 17:39:03
【问题描述】:
假设,
我有一张桌子tblClasses 和tblStudents
现在每个班级都有多名学生。
tblClass
ID Name
1 ClassA
2 ClassB
3 ClassC
tbl学生
ID Name Class_ID
1. john 1
2. Mathew 1
3. Imran 2
4. Jenny 3
现在,我有另一台服务器具有完全相同的 db 和表,我正在使用 Select 和 Insert 将数据从同一表从 server 1 复制到 server 2,例如
insert into server2.dbo.tblClass (Name)
select Name from server1.dbo.tblClass
对于tblStudents
insert into server2.dbo.tblStudents (Name, Class_ID)
select Name, Class_ID from server1.dbo.tblStudents
现在这没问题,但真正的问题是在server2 复制数据后,如何用插入数据后生成的tblClass 的实际IDs 填充tblStudents fk Class_ID进入server2 中的tblStudents,因为 PK 是标识和自动递增的,不能更改设计。
在这种情况下该怎么办?
简单来说,当复制父数据和子数据时,在子表中,外键字段需要填充父的实际 ID,而不是复制它的位置,这显然是不同的。
我不允许更改表格设计或属性,必须使用查询来完成。
有什么建议吗?
【问题讨论】:
标签: sql sql-server tsql stored-procedures