2012/1/18, Marcelo Silva (IG) <[email protected]>:
> Pessoal esse UPDATE esta sem fim... mas não entendi porque o mesmo SQL
> funciona normalmente
>
> Olha o UPDATE
>
> update mv_vendas_itens set cod_key_pre = coalesce(b.cod_key, 0)
> from mv_vendas_itens as a
> inner join mv_vendas_pre_itens b on(b.cod_id = a.cod_id)
> and(b.pedido = a.pedido)
> and(b.codigo = a.codigo)
> and(b.valor_ven = a.valor_ven)
> and(b.obs not in('C'))
> where (a.obs not in('C'))
>
> Aqui o SELECT
>
> select b.cod_key, b.pedido, b.codigo, b.valor_ven, a.* from mv_vendas_itens
> a
> inner join mv_vendas_pre_itens b on(b.cod_id = a.cod_id)
> and(b.pedido = a.pedido)
> and(b.codigo = a.codigo)
> and(b.valor_ven = a.valor_ven)
> and(b.obs not in('C'))
> where (a.obs not in('C'))
>
> O Select vem rapidinho, mas o Update fica em loop
>


Veja a definição do comando update:
http://www.postgresql.org/docs/current/interactive/sql-update.html

Creio que deva ser:

UPDATE mv_vendas_itens a SET cod_key_pre = coalesce(b.cod_key, 0)
FROM mv_vendas_pre_itens b
WHERE (b.cod_id = a.cod_id)
AND (b.pedido = a.pedido)
AND (b.codigo = a.codigo)
AND (b.valor_ven = a.valor_ven)
AND (b.obs not in('C'))
AND (a.obs not in('C'));

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a