gpt4 book ai didi

sql-server-2005 - 将两个表之间的一对多关系复制到另外两个表 (SQL 2005)

转载 作者:行者123 更新时间:2023-11-30 23:58:21 25 4
gpt4 key购买 nike

我有两个具有父子关系的表。我想将他们的一些记录复制到另外两个表中,同样具有父子关系,但表结构略有不同。

两组表都涉及一个外键,一个整数列。所有表的主键列都具有标识增量。

如果我做 SELECT INTO从源父表到目的父表,目的记录的主键值会与源记录不同,失去父子关系。

有谁知道我如何在复制过程中保留这种关系,因为我将在新的父表中拥有新的主键值?我不希望在此复制过程中为新表设置标识增量,因为无法保证源表中的主键值不会已经在目标中。

希望我的描述有意义,并感谢您的意见。如果我能进一步澄清,请告诉我。

最佳答案

完成此操作后,我通过在插入新表后保留旧 ID 来完成此操作。

有些人使用旧 ID 添加临时列,但我知道更好的方法。

您可以使用 the OUTPUT clause将插入的记录插入到临时表中(将新旧 ID 作为映射表。然后在插入子记录时加入该表。

像这样的东西(粗)

DECLARE @MyTableVar TABLE (
NewID INT,
OldID INT
)

INSERT NewParentTable
OUTPUT
INSERTED.ID,
old.ID
INTO @MyTableVar
SELECT *
FROM OldParentTable old


INSERT NewChildTable
SELECT
old.ID,
t.NewID,
old.name
FROM OldChildTable old
INNER JOIN @MyTableVar t ON t.OldID = old.ParentID

关于sql-server-2005 - 将两个表之间的一对多关系复制到另外两个表 (SQL 2005),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3970589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com