none
Update em duas tabelas com uma única query RRS feed

  • Pergunta

  • Boa tarde pessoal !
    Espero ter postado no lugar correto, hehe....

    Tenho duas tabelas com campos que eu chamo usando INNER JOIN, e agora preciso atualiza-los...:

    Clubes: Email, Telefone
    Usuarios: login

    Como faço uma query de update para atualiza-los ? Já tentei estas querys mas de nada adiantou:

    UPDATE clubes,usuarios SET clubes.email = @email, clubes.telefone = @telefone, usuarios.login = @login WHERE usuarios.login = @log 

    UPDATE clubes AS clb
    INNER JOIN usuarios AS usr 
    ON (usr.nome = clb.clube) 
    SET clubes.email = @email, clubes.telefone = @telefone,
    usuarios.login = @login
    WHERE usr.login = @log

    O que acontece: Todos os campos dão update, apenas o login que não, talvez por eu estar usando ele no SET e no WHERE ? Mas as outras query estão atualizando TODOS os campos(Pois não tenho clausula alguma no WHERE para especificar qual campo da tabela clubes ele deve atualizar, isso eu arrumo depois) alguma ajuda para atualizar este login ?

    Obrigado



    • Editado Alan Naidon sexta-feira, 18 de janeiro de 2013 20:02
    sexta-feira, 18 de janeiro de 2013 19:41

Respostas

  • Alan,

    No SQL Server não é possível atualizar 2 tabelas em um único update.

    Você deve realizar 2 updates, um para cada tabela a ser atualizada.

    Espero ter ajudado.

    []'s

    Poisé, Sql... MySQl... Whatever. Achei que independente do caso, seria possível update em duas tabelas com apenas uma query .

    Bom, a solução que eu achei foi fazer oq você disse, fiz 2 Query de Update. 

    MAS... Caso alguém chegue neste tópico e leia estas postagens , recomendo fortemente que façam por transaction ! Para não ocorrer o risco de falhar um update e o outro não e acabar atualizando apenas metade da informação... =)

    Abraço e até +


    • Editado Alan Naidon segunda-feira, 21 de janeiro de 2013 16:00
    • Marcado como Resposta Alan Naidon segunda-feira, 21 de janeiro de 2013 16:00
    segunda-feira, 21 de janeiro de 2013 16:00

Todas as Respostas

  • Olá Alan...

    Tente assim... como nesse exemplo:

     

    UPDATE  Table1

    SET     Table1.Name = Table2.Name

    FROM    Table1 ,

            Table2

    WHERE   Table1.Id = Table2.Id

            AND Table2.CityName = 'Pune'

    Espero ter lhe ajudado.

    Abraço !


    Não esqueça de marcar o post como útil caso tenha te ajudado.

    • Sugerido como Resposta Jô Alves quinta-feira, 24 de maio de 2018 12:11
    sábado, 19 de janeiro de 2013 10:58
  • Alan,

    No SQL Server não é possível atualizar 2 tabelas em um único update.

    Você deve realizar 2 updates, um para cada tabela a ser atualizada.

    Espero ter ajudado.

    []'s

    sábado, 19 de janeiro de 2013 14:37
  • Olá Alan...

    Tente assim... como nesse exemplo:

     

    UPDATE  Table1

    SET     Table1.Name = Table2.Name

    FROM    Table1 ,

            Table2

    WHERE   Table1.Id = Table2.Id

            AND Table2.CityName = 'Pune'

    Espero ter lhe ajudado.

    Abraço !


    Não esqueça de marcar o post como útil caso tenha te ajudado.

    Assim eu estaria dando update em apenas 1 tabela... Preciso atualizar os dados nas 2 ... 

    Obrigado pela atenção.

    segunda-feira, 21 de janeiro de 2013 11:12
  • Alan,

    No SQL Server não é possível atualizar 2 tabelas em um único update.

    Você deve realizar 2 updates, um para cada tabela a ser atualizada.

    Espero ter ajudado.

    []'s

    Poisé, Sql... MySQl... Whatever. Achei que independente do caso, seria possível update em duas tabelas com apenas uma query .

    Bom, a solução que eu achei foi fazer oq você disse, fiz 2 Query de Update. 

    MAS... Caso alguém chegue neste tópico e leia estas postagens , recomendo fortemente que façam por transaction ! Para não ocorrer o risco de falhar um update e o outro não e acabar atualizando apenas metade da informação... =)

    Abraço e até +


    • Editado Alan Naidon segunda-feira, 21 de janeiro de 2013 16:00
    • Marcado como Resposta Alan Naidon segunda-feira, 21 de janeiro de 2013 16:00
    segunda-feira, 21 de janeiro de 2013 16:00