在MS SQLServer的交换两行保留原来的主键和没有手动更新
-
20-08-2019 - |
题
我有以下问题:我有像
的行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)
其他提示
自联接与更新是你唯一安全的赌注
不隶属于 StackOverflow