Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Copiar linha e alterar um pequeno subconjunto de colunas?


OBSERVAÇÃO:Esta resposta é para o SQL Server. O tag foi adicionada à pergunta após esta resposta

Vou assumir que sua tabela tem uma IDENTITY coluna que também é a chave primária, de acordo com os princípios do bom design. Vamos supor também que não ter colunas computadas (ou timestamps ou qualquer tipo que exija mais manipulação). Vamos finalmente supor que você saiba pelo menos o nome dessa coluna de ID, que é padrão, por exemplo "id ".

Você pode usar esta sequência:
SELECT * INTO #tmp FROM tbl WHERE id = @copyfrom;
ALTER TABLE #tmp DROP COLUMN id;
UPDATE #tmp SET
   column1 = ...,
   column2 = ...,
   column3 = ...;  --- the subset of columns you want to change
INSERT tbl SELECT * FROM #tmp;

Demonstração do SQL Fiddle