使用SQL映射ID值

时间:2018-07-20 21:30:20

标签: sql-server identity uniqueidentifier

假定您有两个具有匹配表结构的数据库。 例如,

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。如何在不更改表的情况下做到这一点(将old_id值保留在D2.T1中,并稍后通过比较旧id值在D2.T2上进行更新)?

要提示表格结构,请参见下文。

D1.T1

ID, VAL
4934, A
4936, B
5011, C

D1.T2

ID, NAME, FKID
2478, I, 4934
2479, II, 4936
2481, III, 5011

D2.T1

ID, VAL
7813, A
7817, B
7819, C

D2.T2

ID, NAME, FKID
3416, I, 7813
3417, II, 7817
3419, III, 7819

1 个答案:

答案 0 :(得分:0)

例如,我们现在遇到

   D1.T1  of 7813, D  

,然后发现D2.T1中已经存在7813?

“但是在插入D2期间ID值会发生变化”

  
    
      

它变成什么?说9876 ??所以现在D2.T1应该是9876,D

    
  

好吧,让我们继续尝试

   D1.T2  of  2482, IIII, 7813  

但是请>>我们怎么知道这个7813是指7813,A还是7813,D

我们不知道,我们无法确定是否需要保留7813或更改为9876。

Ergo,我们需要表格中包含的更多信息,例如另一列。