Trocando duas linhas em MS SQLServer mantendo a chave primária original e sem atualização manual

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

Pergunta

Eu tenho o seguinte problema: Eu tenho linhas como

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

Gostaria de trocá-los mantendo todas as antigas chaves primárias e restrições. Claro, eu posso facilmente resolver isso manualmente, atualizando as linhas. Eu sou tipo de perguntando se alguém tem alguma solução excelente para este tipo de problema em vez de apenas executar o comando update manualmente. Eu realmente aprecio todas as sugestões ou recomendações.

Foi útil?

Solução

Eu não testei isso, mas eu acho que vai funcionar. Estou assumindo que id é uma única coluna de chave primária. Se esse não é o caso, então você terá de ajustar este código ligeiramente para lidar com a 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)

Outras dicas

auto juntar-se com uma atualização é a sua única aposta segura

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top