Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用SQL映射ID值_Sql Server_Identity_Uniqueidentifier - Fatal编程技术网

Sql server 使用SQL映射ID值

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。如何在不改变表的情况下做到这一点(

假设两个数据库中都有匹配表结构的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。如何在不改变表的情况下做到这一点(在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