none
Fazer insert em lote RRS feed

  • Pergunta

  • Bom dia amigos

    Preciso de uma ajuda, no comando abaixo tem uma inserção de parametros em uma tabela,

    FK_tblWTDNaturezasPK_Natureza ( os IDS vao de 1 a 8000)

    FK_tblWTDQualidadesPK_Qualidade ( fixo em 5)

    Impressao ( fixo em 0)

    INSERT INTO tblWTDQualidadesPorNatureza (FK_tblWTDNaturezasPK_Natureza, FK_tblWTDQualidadesPK_Qualidade, Impressao) VALUES ('339', '5', '0')

    O que eu preciso e inserir o codigo 5 em todos os Ids do campo FK_tblWTDNaturezasPK_Natureza, onde ainda não tem o codigo 5

    Ou seja o único valor que vai variar é o ID do campo FK_tblWTDNaturezasPK_Natureza

    Alguns tem outros não...

    Como eu consigo fazer essa inserção em lote, do codigo 5, apenas onde não existe?

    segunda-feira, 4 de setembro de 2017 14:21

Respostas

  • Considerando que o nome da tabela de Naturezas é tblWTDNaturezas e que a coluna que contem os IDs é a tblWTDNaturezasPK_Natureza, experimente dessa forma:

    INSERT INTO tblWTDQualidadesPorNatureza (FK_tblWTDNaturezasPK_Natureza, FK_tblWTDQualidadesPK_Qualidade, Impressao) 
        SELECT
            t.tblWTDNaturezasPK_Natureza,
            '5', 
            '0'
        FROM tblWTDNaturezas AS t
        WHERE
            NOT EXISTS
                (SELECT 1 FROM tblWTDQualidadesPorNatureza AS s
                 WHERE 
                     s.FK_tblWTDNaturezasPK_Natureza = t.tblWTDNaturezasPK_Natureza and 
                     s.FK_tblWTDQualidadesPK_Qualidade = '5')

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Tiago_Aurelio segunda-feira, 4 de setembro de 2017 17:07
    segunda-feira, 4 de setembro de 2017 17:04

Todas as Respostas

  • Bom dia,

    Não sei se entendi corretamente, mas experimente fazer uns testes dessa forma:

    INSERT INTO tblWTDQualidadesPorNatureza (FK_tblWTDNaturezasPK_Natureza, FK_tblWTDQualidadesPK_Qualidade, Impressao) 
        SELECT
            t.FK_tblWTDNaturezasPK_Natureza,
            '5', 
            '0'
        FROM tblWTDQualidadesPorNatureza AS t
        WHERE
            NOT EXISTS
                (SELECT 1 FROM tblWTDQualidadesPorNatureza AS s
                 WHERE 
                     s.FK_tblWTDNaturezasPK_Natureza = t.FK_tblWTDNaturezasPK_Natureza and 
                     s.FK_tblWTDQualidadesPK_Qualidade = '5')

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    segunda-feira, 4 de setembro de 2017 14:29
  • Gapimex obrigado

    So deu esse erro abaixo:

    Violation of PRIMARY KEY constraint 'PK_tblWTDQualidadesPorNatureza'. Cannot insert duplicate key in object 'dbo.tblWTDQualidadesPorNatureza'. The duplicate key value is (307, 5).

    segunda-feira, 4 de setembro de 2017 15:50
  • Considerando que o nome da tabela de Naturezas é tblWTDNaturezas e que a coluna que contem os IDs é a tblWTDNaturezasPK_Natureza, experimente dessa forma:

    INSERT INTO tblWTDQualidadesPorNatureza (FK_tblWTDNaturezasPK_Natureza, FK_tblWTDQualidadesPK_Qualidade, Impressao) 
        SELECT
            t.tblWTDNaturezasPK_Natureza,
            '5', 
            '0'
        FROM tblWTDNaturezas AS t
        WHERE
            NOT EXISTS
                (SELECT 1 FROM tblWTDQualidadesPorNatureza AS s
                 WHERE 
                     s.FK_tblWTDNaturezasPK_Natureza = t.tblWTDNaturezasPK_Natureza and 
                     s.FK_tblWTDQualidadesPK_Qualidade = '5')

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Tiago_Aurelio segunda-feira, 4 de setembro de 2017 17:07
    segunda-feira, 4 de setembro de 2017 17:04
  • Agora deu certo

    Mais uma vez muito obrigado pela ajuda

    segunda-feira, 4 de setembro de 2017 17:07