none
UPDATE RRS feed

  • Pergunta

  • Tenho que realizar um Update mas estou inseguro quanto a isso.

    Montar um script de update para atualizar o nome da parte desses casos para nome da unidade da tabela corp_unidade.

    exemplo 

    update parte nm_parte = nm_unidade 

    onde cd_unidade igual a cd_unidade da tabela unidade

    eu fiz desse jeito aqui mas não sei se está certo

    update pa.nm_parte
     set pa.nm_parte = nm_unidade
    from Parte pa
    inner join Corp_Unidade cr
     on cr.cd_unidade = cr.cd_unidade

    sexta-feira, 3 de julho de 2020 00:31

Respostas

Todas as Respostas

  • Luan,

    Aparentemente sim, minha sugestão, vamos trabalhar com transações explícitas para você ter certeza que o código esta certo e depois confirmar, faça o seguinte:

    -- Abrindo o bloco de Transação --

    Begin Transaction T1 update pa.nm_parte set pa.nm_parte = nm_unidade from Parte pa inner join Corp_Unidade cr on cr.cd_unidade = cr.cd_unidade Go -- Confirmar as alterações -- Select * from Parte Go -- Caso esteja certo -- Commit Transaction T1 -- Caso esteja errado -- Rollback Transaction T1 Go



    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 3 de julho de 2020 01:48
  • Bom dia,

    Luan, segue o comando para testes com alguns pequenos ajustes:

    update pa
    set pa.nm_parte = cr.nm_unidade
    from Parte pa
    inner join Corp_Unidade cr
        on cr.cd_unidade = pa.cd_unidade
    

    Espero que ajude


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

    • Sugerido como Resposta Avatar SQL terça-feira, 7 de julho de 2020 10:43
    • Marcado como Resposta Luan Azevedo quinta-feira, 30 de julho de 2020 17:01
    sexta-feira, 3 de julho de 2020 12:03
  • Junior, bom dia.

    Eu não soube da informação completa por aqui devido a minha falta de experiência. Peço desculpas e aqui vai o que me pediram.

    Montar escopo (criar uma tabela ex: escopo_DE_PARA_Parte)

    Daí me passaram essa consulta e disseram que eu teria que materializar ela com INTO.

    SELECT pa.nm_Parte as Nome, Count(pa.nm_Parte) as Total
    from Parte pa
    INNER JOIN Causa
    On cd_Parte_Pro_Principal = cd_Parte

    INNER JOIN Corp_Unidade cr
    on cr.cd_Unidade = pa.cd_Unidade
    where pa.nm_Parte like '%TESTE%'  or  pa.nm_Parte like '%BANCO'
    group by pa.nm_Parte;

    ---------

    E aí sim realizar o UPDATE "Montar um script de update para atualizar o nome da parte desses casos para nome da unidade da tabela corp_unidade."

    Pois da forma que eu realizei eu daria update na tabela toda. Perguntei se eu colocaria clausula where no update e me informaram que não já que a primeira consulta já estaria materializada. (entretanto eu não sei o que significa isso)


    sexta-feira, 3 de julho de 2020 14:06
  • Tipo assim 

    select coluna
    select coluna
    into tabela_escopo
    from parte
    join corp_unidade

    sexta-feira, 3 de julho de 2020 14:37
  • Luan,

    Com base nesta frase:

    "Pois da forma que eu realizei eu daria update na tabela toda. Perguntei se eu colocaria clausula where no update e me informaram que não já que a primeira consulta já estaria materializada. (entretanto eu não sei o que significa isso)"

    Isso quer dizer que a coluna já existe, ela é um elemento físico na sua tabela e contem valores!!!

    Mas esta argumentação é bastante confusa e não representa uma garantia que o Update vai ser realizado corretamente, pois podemos sem querer aplicar uma atualização de dados nesta coluna para todas as linhas.

    Você chegou a testar o exemplo que eu te passei?


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 3 de julho de 2020 14:53
  • Sim, atualizou a tabela toda.

    Nesse script eu deveria criar uma tabela "escopo" com into mas não sei onde inserí-lo para que a partir do resultado eu realizasse o update nela. Entendeu?

    Realizando este primeiro passo, como eu juntaria o update? Eu iria dar o update nessa tabela temporária que eu criei?

    SELECT pa.nm_Parte as Nome, Count(pa.nm_Parte) as Total
    from Parte pa
    INNER JOIN Causa
    On cd_Parte_Pro_Principal = cd_Parte

    INNER JOIN Corp_Unidade cr
    on cr.cd_Unidade = pa.cd_Unidade
    where pa.nm_Parte like '%TESTE%'  or  pa.nm_Parte like '%BANCO'
    group by pa.nm_Parte;

    sexta-feira, 3 de julho de 2020 15:18
  • Luan,

    Calma, vamos por partes, você esta falando de Update e Tabela Temporária!

    Pois bem, eu lhe pergunto, o que você quer fazer, pois iniciou este post fazendo referência a um Update, mas agora esta destacando o uso de Temp Table.

    Você tem dimensão do volume de dados que será alterado caso o Update seja realizado? Acredito que a resposta para esta pergunta seja respondida inicialmente pelo Select que você esta montando.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 3 de julho de 2020 21:31