我有以下问题:我有像

的行
ID   CODE     NAME            .........
1    h1100h1  Cool example1   .........
2    h654441  Another cool1   .........

我想交换它们保留了所有旧的主键和约束。当然,我很容易手动通过更新行解决这个问题。我有点想知道是否有人有这样那样的问题,而不是仅仅手动执行更新命令,任何优秀的解决方案。我真的很感激任何意见或建议。

有帮助吗?

解决方案

我没有测试过这一点,但我认为它会工作。我假设ID是一个单列主键。如果不是的话,那么你就需要稍微调整这个代码来处理的PK。

UPDATE
     T1
SET
     column_1 = T2.column_1,
     column_2 = T2.column_2,
     ...
FROM
     dbo.My_Table T1
INNER JOIN dbo.My_Table T2 ON
     T2.id =
          CASE
               WHEN T1.id = @id_1 THEN @id_2
               WHEN T1.id = @id_2 THEN @id_1
               ELSE NULL
          END
WHERE
     T1.id IN (@id_1, @id_2)

其他提示

自联接与更新是你唯一安全的赌注

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top