Evandro (GMAIL) escreveu:
> Osvaldo Rosario Kussama escreveu:
>> 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
> Mesmo assim dá chave duplicada |
> mas valew pela tentativa !
> 


No meu teste funcionou:

bdteste=# CREATE TEMP TABLE teste(coluna1 INTEGER PRIMARY 
KEY, coluna2 text);
NOTA:  CREATE TABLE / PRIMARY KEY criará índice implícito 
"teste_pkey" na tabela "teste"
CREATE TABLE

bdteste=# INSERT INTO teste(coluna1,coluna2) VALUES 
(1,'um'), (2,'dois'), (3,'três'), (4,'quatro'), (5,'cinco');
INSERT 0 5

bdteste=# SELECT * FROM teste;
  coluna1 | coluna2
---------+---------
        1 | um
        2 | dois
        3 | três
        4 | quatro
        5 | cinco
(5 registros)

bdteste=# 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;
UPDATE 5

bdteste=# SELECT * FROM teste;
  coluna1 | coluna2
---------+---------
        6 | cinco
        5 | quatro
        4 | três
        3 | dois
        2 | um
(5 registros)

Osvaldo

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

Responder a