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

Responder a