这是场景:
我正在将数据从旧系统迁移到新系统。
旧系统有 2 个表,分别代表评论及其回复。
新系统有一个注释表,允许嵌套注释。因此,它有一个自引用外键。
我需要将数据从 2 个表移至 1 个表中。
问题是这样的: 虽然我知道哪些子评论与哪些父评论相关,但在插入新表时,我不知道父评论的新 ID。
我考虑过使用 while 循环来遍历每个父注释,然后在循环内执行 2 次插入。
现在是使用光标的合适时机吗?根据几乎所有人的建议,我像躲避瘟疫一样避开它们。
您能想出一种不同的方法将数据从 2 个表移至 1 个表吗?
所有这些都发生在另一个 while 循环内。我还想知道是否应该尝试将此循环分解为一个单独的循环而不是嵌套它们。
最佳答案
如果我面前没有测试数据库,您可以使用MSSQL中的OUTPUT
关键字来完成。应该足以让您开始:
DECLARE @NewIDs Table
(
NewID INT,
OldID INT
)
INSERT INTO NewTable
OUTPUT NewTable.ID,
OldTable.ID
INTO @NewIDs
SELECT NULL As ParentCommentID, Othercolumns
FROM OldParentTable
INSERT INTO NewTable
SELECT NewID As ParentCommentID, OtherColumns
FROM OldChildTable
JOIN @NewIDs NewIDs
ON NewIDs.OldID = OldChildTable.OldParentTableID
关于SQL 迁移脚本 - 嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19991789/