Sql server 使用SQL映射ID值
假设两个数据库中都有匹配表结构的2db。 比如说,Sql server 使用SQL映射ID值,sql-server,identity,uniqueidentifier,Sql Server,Identity,Uniqueidentifier,假设两个数据库中都有匹配表结构的2db。 比如说, D1.T1(ID, VAL) = D2.T1(ID,VAL) D1.T2(ID, NAME,FID) = D2.T2(ID, NAME,FID) 其中D1.T2.FID=D1.T1.ID 现在我想将行从D1复制到D2。但是ID值在插入D2期间会发生变化(不是因为我不能使用IDENTITY_insert强制插入相同的ID,而是因为D2.T1中存在相同的ID用于其他一些值) 现在我需要用新的标识值更新D2.T2。如何在不改变表的情况下做到这一点(
D1.T1(ID, VAL) = D2.T1(ID,VAL)
D1.T2(ID, NAME,FID) = D2.T2(ID, NAME,FID)
其中D1.T2.FID=D1.T1.ID
现在我想将行从D1复制到D2。但是ID值在插入D2期间会发生变化(不是因为我不能使用IDENTITY_insert强制插入相同的ID,而是因为D2.T1中存在相同的ID用于其他一些值)
现在我需要用新的标识值更新D2.T2。如何在不改变表的情况下做到这一点(在D2.T1中保留旧的_id值,然后在D2.T2上通过比较旧的id值进行更新)
要给出表格结构的提示,请参见下文
D1.T1
ID, VAL
4934, A
4936, B
5011, C
D1.T2
D2.T1
ID, VAL
7813, A
7817, B
7819, C
D2.T2
例如,我们现在遇到了一个
D1.T1 of 7813, D
然后发现7813已经存在于D2.T1
“但ID值在插入D2期间会更改”
它会变成什么?说9876??现在D2.T1等于9876,D
好吧,让我们继续试着模仿
D1.T2 of 2482, IIII, 7813
但是等等>>我们怎么知道这个7813是指7813,A还是7813,D
我们不知道,我们无法确定是否需要保留7813或更改为9876
因此,我们需要更多驻留在表中的信息,例如另一列
D1.T1 of 7813, D
D1.T2 of 2482, IIII, 7813