none
Erro em um Insert RRS feed

  • Pergunta

  • Pessoal,

    Estou com o seguinte problema, assim quando eu vou copiar os registros de uma tabela para outra me retorna o seguinte erro :

    Msg 264, Level 16, State 1, Line 1
    The column name 'campo1' is specified more than once in the SET clause. A column cannot be assigned more than one value in the same SET clause. Modify the SET clause to make sure that a column is updated only once. If the SET clause updates columns of a view, then the column name 'campo2' may appear twice in the view definition.

    Fiz com o seguinte Query abaixo

    insert into tabela1 (campo1,campo2,campo3,campo4,campo5) select campo1,campo2,campo3,campo4,campo5 from tabela2

     

    e me retorna o erra acima. Alguém sabe me informar o que ocorre aí  ? Fiz diversas pesquisa e não cheguei a um indendimento.

     

    Grato a todos

     

    Christian Rosa

    sexta-feira, 21 de janeiro de 2011 01:09

Respostas

  • Cristian

    basta vc adicionar o comando de insert...

    INSERT INTO tabela3
    SELECT DISTINCT campo1 FROM Tabela1
    WHERE campo1 NOT IN (SELECT campo2  FROM tabela2 )

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Sugerido como Resposta Eder Costa terça-feira, 1 de fevereiro de 2011 17:29
    • Marcado como Resposta Eder Costa quinta-feira, 3 de fevereiro de 2011 15:25
    quinta-feira, 27 de janeiro de 2011 18:28
    Moderador

Todas as Respostas

  • Rosa,

     

    O Comando esta certinho, pegando apenas o select desse comando, voce consegue rodar sem problemas?

    sexta-feira, 21 de janeiro de 2011 10:19
    Moderador
  • Sim sim,

    Se eu rodar um select campo1,campo2,campo3,campo4,campo5 from tabela2

    Vai de boa ......

    sexta-feira, 21 de janeiro de 2011 10:59
  • Rosa,

    Verifique se existe uma trigger na tabela1

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    sexta-feira, 21 de janeiro de 2011 11:10
    Moderador
  • Marcelo,

    Fiz o seguinte Procedimento

    Fui na minha na Tabela1 expandi a arvore até aparecer triggers e cliquei em cima para mostrar se tinhas as triggers e não apareceu nada. isso no Manager do Sql 2008

     

    Att,

     

    Christian Rosa

     

    sexta-feira, 21 de janeiro de 2011 11:17
  • Christian,

    um outro modo é como sp_helptrigger 'dbo.tabela1'

    este é o unico comando que vc esta executando? não existe um update? é uma proc?

    att.
    Marcelo Fernandes 


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    sexta-feira, 21 de janeiro de 2011 12:04
    Moderador
  • Rosa, o que aconteceu foi, pelo jeito, voce estava tentando fazer o insert da master por exemplo, por isso foi necessario especificar a base de dados.

     

    Em relação ao erro seguinte: O insert que voce esta fazendo violando a contraint FK_Clientes_ClientesOrigem, existem 2 solução, ou voce desabilita essa constraint pelo comando rodado dentro da base: alter table SuaTabela NOCHECK CONSTRAINT FK_Clientes_ClientesOrigem.

     

    Ou adapta seu select para poder passar por essa constraint.

    Lembrando que, ao desabilitar a constraint e realizar o insert, pode haver futuras inconsistência em seus dados, é preciso tomar cuidado.

    • Sugerido como Resposta Eder Costa quinta-feira, 27 de janeiro de 2011 14:56
    sexta-feira, 21 de janeiro de 2011 13:25
    Moderador
  • Caputofa,

    Se eu desabilitar minhas constraint eu posso habilitalas novamente depois de inserir os registros ?

    Não tenho nem idéia de como eu farei o para passar pelas constraint, alguma idéia ?

     

    Att,

    sexta-feira, 21 de janeiro de 2011 13:32
  • Sim, no mesmo comando, a palavra NOCHECK faz as ações realizadas posteriormente não verificarem essa constraiint, para habilita-la nvoamente é só rodar o mesmo comando porem ao ivnez de NOCHECK voce colocar CHECK.
    • Sugerido como Resposta Eder Costa quinta-feira, 27 de janeiro de 2011 14:56
    sexta-feira, 21 de janeiro de 2011 13:36
    Moderador
  • Christian,

    Conforme o amigo Caputofa mencionou é possível desligar e ligar as contrainsts, atenção para isto, pois vc vai inserir um registro na tabela filho sem pai! se isto não for um problema... vc esta perdendo a integridade referencial  deste registro...

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Sugerido como Resposta Eder Costa quinta-feira, 27 de janeiro de 2011 14:56
    sexta-feira, 21 de janeiro de 2011 13:47
    Moderador
  • Verdade,

    Como posso fazer ele inserir na tabela pai então ? tenho um monte de FK que precisam receber esse valor.

    sexta-feira, 21 de janeiro de 2011 16:46
  • Primeiro vc deve inserir na tabela pai... depois inserir na tabela filho

    Como vc esta recebendo o erro, deve identificar quem são os registros que estão sem registro  da tabela pai..  um not in básico :)

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Sugerido como Resposta Eder Costa quinta-feira, 27 de janeiro de 2011 14:56
    sexta-feira, 21 de janeiro de 2011 17:02
    Moderador
  • Olá Christian Rosa!

    Você obteve algum progresso?

    Att;


    Eder Costa - LATAM Forum Support Engineer
    Microsoft Corporation
    • Editado Eder Costa quinta-feira, 27 de janeiro de 2011 14:59 .
    quinta-feira, 27 de janeiro de 2011 14:58
  • Olá Eder,

    Desculpa pela demora, mas obtive sim eu fiz na mão mesmo por que era poucos registros (nesse caso) mas estou tentando ver algo mais inteligente para os proximos casos.

    O caso era que quando eu roda o insert os registros tinham que estar na tabela pai e na tabela filho então o que eu fiz foi o seguinte:

    SELECT DISTINCT campo1 FROM Tabela1
    WHERE campo1 NOT IN (SELECT campo2  FROM tabela2 )

    O resultado eu peguei e iseri na mão, mas ainda não gsotei muito, queria que já pegasse o resultado e iserisse automaticamente

    Alguem pode dar uma luz ?

     

    Att,

     

    Christian Rosa

    • Sugerido como Resposta Eder Costa quinta-feira, 3 de fevereiro de 2011 15:25
    quinta-feira, 27 de janeiro de 2011 17:53
  • Cristian

    basta vc adicionar o comando de insert...

    INSERT INTO tabela3
    SELECT DISTINCT campo1 FROM Tabela1
    WHERE campo1 NOT IN (SELECT campo2  FROM tabela2 )

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Sugerido como Resposta Eder Costa terça-feira, 1 de fevereiro de 2011 17:29
    • Marcado como Resposta Eder Costa quinta-feira, 3 de fevereiro de 2011 15:25
    quinta-feira, 27 de janeiro de 2011 18:28
    Moderador