MS SQLSERVER에서 두 행을 원래 기본 키를 유지하고 수동 업데이트없이 스왑

StackOverflow https://stackoverflow.com/questions/484040

문제

다음과 같은 문제가 있습니다.

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