当前位置:  开发笔记 > 编程语言 > 正文

在MS SQLServer中交换两行,保留原始主键,无需手动更新

如何解决《在MSSQLServer中交换两行,保留原始主键,无需手动更新》经验,为你挑选了1个好方法。

我有以下问题:我有像行

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

我想交换它们保留所有旧的主键和约束.当然,我可以通过更新行手动轻松解决此问题.我有点想知道是否有人有这种问题的优秀解决方案,而不是手动执行更新命令.我非常感谢任何建议或建议.



1> Tom H..:

我没有测试过这个,但我认为它会起作用.我假设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)

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有