none
Update em tabela vazia RRS feed

  • Pergunta

  • Bom Dia!

    Estou querendo inserir informações na tabela SB5 (que está atualmente vazia)

    Eu gostaria de inserir na coluna SB5.B5_COD a mesma informação da tabela SB1.B1_COD

    Minha tentativa foi a seguinte:

    UPDATE  SB5010 SET B5_COD = B1_COD FROM SB1010

    Qual seria o comando correto?

    Abraço,

    Felipe

    quinta-feira, 8 de agosto de 2013 11:13

Respostas

  • Felipe, o erro é por que na tabela SB5010 tem uma chave primaria, e nesta coluna não pode ser inseridos dados duplicados, voce disse que esta tabela esta vazia, certo ? se for isso mesmo ha codigos duplicados na tabela SB1010, veja se a tabela ainda esta vazia e se tiver tente assim:

    INSERT INTO SB5010 (B5_FILIAL, B5_COD)
    SELECT distinct B1_FILIAL, B1_COD FROM SB1010


    Alexandre Matayosi Conde Mauricio.

    • Sugerido como Resposta Lucas Vandor quinta-feira, 8 de agosto de 2013 15:23
    • Marcado como Resposta Felipe Juchem quinta-feira, 8 de agosto de 2013 15:54
    quinta-feira, 8 de agosto de 2013 13:19

Todas as Respostas

  • Felipe, update é para atualizar, e voce quer inserir dados, tem que usar o insert, mas é importante tambem alimentar todos os campos para não ficar somente 1 coluna preenchida e as outras nulas (se for permitido), veja exemplo:

    insert into SB5 (coluna1, coluna2, coluna3)
    select
      Coluna1,
      Coluna2,
      Coluna3
        from SB1


    Alexandre Matayosi Conde Mauricio.

    quinta-feira, 8 de agosto de 2013 12:18
  • Fiz o seguinte comando:

    INSERT INTO SB5010 (B5_FILIAL, B5_COD) 
    SELECT B1_FILIAL, B1_COD FROM SB1010

    Me retornou:

    Violation of PRIMARY KEY constraint 'SB5010_PK'. Cannot insert duplicate key in object 'dbo.SB5010'.


    quinta-feira, 8 de agosto de 2013 13:15
  • Felipe, o erro é por que na tabela SB5010 tem uma chave primaria, e nesta coluna não pode ser inseridos dados duplicados, voce disse que esta tabela esta vazia, certo ? se for isso mesmo ha codigos duplicados na tabela SB1010, veja se a tabela ainda esta vazia e se tiver tente assim:

    INSERT INTO SB5010 (B5_FILIAL, B5_COD)
    SELECT distinct B1_FILIAL, B1_COD FROM SB1010


    Alexandre Matayosi Conde Mauricio.

    • Sugerido como Resposta Lucas Vandor quinta-feira, 8 de agosto de 2013 15:23
    • Marcado como Resposta Felipe Juchem quinta-feira, 8 de agosto de 2013 15:54
    quinta-feira, 8 de agosto de 2013 13:19
  • Obrigado Alexandre!

    de fato o campo "RECNO" é um campo sequencial, e quando inseri ele junto no INSERT INTO, deu certo!

    ficou assim:

    INSERT INTO SB5010 (B5_COD, R_E_C_N_O_)
    SELECT DISTINCT B1_COD, R_E_C_N_O_ FROM SB1010

    abraço,

    Felipe

    quinta-feira, 8 de agosto de 2013 15:57
  • Show de bola Felipe, acredito que o problema não é nem o fato do campo ser sequencial ou não mas ter codigos duplicados na tabela SB1010, se voce fizer um count e depois um count distinct neste campo nesta tabela voce vai ver que o distinct vai retornar um valor menor indicando que tem duplicidade.

    Alexandre Matayosi Conde Mauricio.

    quinta-feira, 8 de agosto de 2013 15:59