Olá Rubens, A sua pergunta já foi respondida, mas eu vou deixar um outro jeito de fazer um update numa tabela que eu uso direto, justamente por sua versatilidade e facilidade. Inclusive, havia um processo aonde eu trabalho ue fazia um update meio locão que demora em torno de 10 minutos, era rodado à noite, foi modificado o update e hoje roda em menos de 10 segundos, isso ocorre porque o postgres consegue traçar um plano melhor para o update:
*update foo a -- Note o use de alias na tabela set coluna = b.coluna -- no set não passa a alias, não precisa from bar b -- o from aqui é melhor do que fazer um subselect where -- defino o filtro a.codfoo = b.codbar* Espero ter ajudado ai! Atenciosamente, Rafael Domiciano 2009/6/23 Rubens José Rodrigues <[email protected]> > Muito obrigado pela ajuda > > > > > > *"** **Falta de tempo é desculpa daqueles que perdem tempo por falta de > métodos**"* > > * * > > Att. > > > ---------------------------------------------------------------------------- > > Rubens José Rodrigues > > T.I, Analista de Suporte > > Tel: (27)3399-6419 / (27)9969-8081 > > [email protected] > > > ---------------------------------------------------------------------------- > > Broker Nestle do Brasil S/A > > Rua José Ramos de Oliveira, 91, 29111-280 > > Nossa Senhora da Penha, Vila Velha, ES > > (27)3399-6400 / (27)9975-0140 > > > > *De:* [email protected] [mailto: > [email protected]] *Em nome de *Fabrízio de > Royes Mello > *Enviada em:* terça-feira, 23 de junho de 2009 14:11 > *Para:* Comunidade PostgreSQL Brasileira > *Assunto:* Re: [pgbr-geral] Uso de aliases em comandos update. > > > > > > 2009/6/23 Rubens José Rodrigues < > [email protected]> > > <corte> > > Tentativa: > > > > Update foo a set a.coluna = (select count(1) from outratabela where > codfoo=a.codfoo); > > > > Erro: > > > > Error: "ERROR: column "a" of relation "foo" does not exist > > LINE 1: update foo a set a.coluna=(select count(1) from... > > > > Caro Rubes, > > Como você bem citou a documentação oficial [1] no SET do UPDATE você deve > referenciar diretamente a coluna da tabela (ou alias) que é alvo do comando. > No valor setado você pode colocar uma "Tabela.Coluna", dependendo da forma > como você está escrevendo o SQL. > > Tente: > > Update foo a set coluna = (select count(1) from outratabela where > codfoo=a.codfoo); > > > [1] http://www.postgresql.org/docs/8.3/interactive/sql-update.html > > -- > Fabrízio de Royes Mello > >> Blog sobre PostgreSQL: http://fabriziomello.blogspot.com > ------------------------------ > > E-mail verificado pelo Terra Anti-Spam. > Para classificar esta mensagem como spam ou não spam, clique > aqui<http://ecp.terra.com.br/cgi-bin/reportspam.cgi?+_d=SCY0MDUxNTIxMiNwZXJtIWJhdGlzdGFyZXByZXNlbnRhY29lc2xtJjEsMTI0NTc3NzA1OS42Mjk5NTkuMTY5NzguZ2FuYW5vcXVlLnRlcnJhLmNvbSw2MzU0TerraMail> > . > Verifique periodicamente a pasta Spam para garantir que apenas mensagens > indesejadas sejam classificadas como Spam. > ------------------------------ > > Esta mensagem foi verificada pelo E-mail Protegido. > Atualizado em 23/06/2009 > > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > >
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
