【问题标题】:Mapping ID values using SQL使用 SQL 映射 ID 值
【发布时间】:2018-07-20 21:30:20
【问题描述】:

假设您有 2 个数据库,两者都具有匹配的表结构。 例如,

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

【问题讨论】:

    标签: sql-server identity uniqueidentifier


    【解决方案1】:

    例如,我们现在遇到一个

       D1.T1  of 7813, D  
    

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

    "但是在插入 D2 的过程中 ID 值会发生变化"

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

    好吧,让我们继续尝试复制

       D1.T2  of  2482, IIII, 7813  
    

    BUT WAIT >> 我们如何知道这个 7813 是指 7813, A 还是 7813, D

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

    因此,我们需要更多的信息,这些信息位于表中,例如另一列。

    【讨论】:

      猜你喜欢
      • 2019-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-18
      • 2022-11-01
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      相关资源
      最近更新 更多