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