Mateus, muito obrigado, vai funcionar. Eu não soube me expressar direito no
meu update, pois, como as alterações são em clientdataset ele usa como
chave o id.

Em 30 de maio de 2012 23:46, Matheus de Oliveira
<matioli.math...@gmail.com>escreveu:

>
> 2012/5/30 Anselmo Silva <anselmo....@gmail.com>
>
>> Dado o seguinte:
>>
>> -----------------------------------------------------------------------------
>> CREATE TEMP TABLE TESTE (id serial not null,
>> codvenda integer,
>>  ordem integer);
>>
>> CREATE UNIQUE INDEX ON teste (codvenda, ORDEM);
>>
>> INSERT INTO TESTE (codvenda, ordem) values (1,1);
>> INSERT INTO TESTE (codvenda, ordem) values (1,2);
>>
>> begin;
>> -- tentando inverter ordem na mesma transação
>> update teste set ordem = 2 where codvenda = 1 and ordem = 1;
>> update teste set ordem = 1 where codvenda = 1 and ordem = 2;
>>
>
> Independente do DEFERRED, tem um erro de lógica aí (por causa do WHERE).
> Você está atualizando (no primeiro update) o registro com id=1, no segundo
> update você "reatualiza" o mesmo registro (e o outro) já que para ele ordem
> passa a ser 2, daí nem com deferred vai resolver.
>
> 2012/5/30 Leandro Guimarães Faria Corcete DUTRA <l...@dutras.org>
>
>>
>>        Acho que continua no TODO, já viu essa página?
>>
>>
> Na verdade essa funcionalidade já existe, mas tem que usar uma chave
> UNIQUE e não um índice.
>
> Exemplo:
>
>
> CREATE TEMP TABLE TESTE (id serial not null,
>  codvenda integer,
>  ordem integer);
>
> ALTER TABLE teste ADD CONSTRAINT uk_codvendaordem UNIQUE (codvenda, ordem)
> DEFERRABLE INITIALLY DEFERRED;
>
> Agora da seguinte forma funciona (considerando que os id's estão certos):
> BEGIN;
> UPDATE teste SET ordem = 2 WHERE id = 1;
> UPDATE teste SET ordem = 1 WHERE id = 2;
> COMMIT;
>
> Atenciosamente,
> --
> Matheus de Oliveira
>
> Bacharelado em Ciências de Computação
> Laboratório de Computação de Alto Desempenho - 
> LCAD<http://www.lcad.icmc.usp.br/>
> Instituto de Ciências Matemáticas e de Computação - 
> ICMC<http://www.icmc.usp.br/>
> Universidade de São Paulo - USP <http://www.sc.usp.br/>
>
>
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Anselmo M. Silva
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a