PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Não é possível SELECT da cláusula UPDATE RETURNING no postgres


Antes do PostgreSQL 9.1 INSERT/UPDATE/DELETE só podia ser usado como instruções de nível superior. É por isso que você está recebendo um erro de sintaxe.

A partir do 9.1, você pode usar instruções de modificação de dados com expressões de tabela comuns. Sua consulta de exemplo ficaria assim:
WITH updated AS (UPDATE test SET description = 'test' RETURNING id)
SELECT * FROM test WHERE id IN (SELECT id FROM updated);

Tenha cuidado ao selecionar na tabela recém-modificada. Você pode obter resultados confusos dessa maneira. Como as consultas são executadas no mesmo instantâneo, o SELECT não verá os efeitos da instrução UPDATE.