Evandro (GMAIL) escreveu:
> Boa tarde pessoal,
> preciso fazer um update em uma chave primária, mas isso esta causando 
> uma duplicação de chave
> se fosse em MySQL ou ORACLE poderia resolver usando um UPDATE com ORDER BY
> mas notei que o PostreSQL não tem este recurso
> existe algum forma de contornar este problema ?
> 
> segue um exemplo simples para simular o erro
> 
> CREATE TABLE teste
> (
>   coluna1 integer NOT NULL,
>   CONSTRAINT chaveprimaria PRIMARY KEY (coluna1)
> )
> WITHOUT OIDS;
> 
> 
> INSERT INTO teste(coluna1) VALUES (1);
> INSERT INTO teste(coluna1) VALUES (2);
> 
> update teste set coluna1 = (coluna1 + 1)
> 
> 
> ERRO: duplicar chave viola a restrição de unicidade "chaveprimaria"
> SQL state: 23505
> 
> 


Tente:
UPDATE teste SET coluna1 = t_aux.coluna1+1
FROM (
         SELECT coluna1
           FROM teste
           ORDER BY coluna1 DESC
      ) t_aux
WHERE teste.coluna1 = t_aux.coluna1;

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

Responder a