PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Impossibile SELECT dalla clausola UPDATE RETURNING in postgres

Prima di PostgreSQL 9.1 INSERT/UPDATE/DELETE poteva essere utilizzato solo come istruzioni di primo livello. Questo è il motivo per cui ricevi un errore di sintassi.

A partire dalla versione 9.1 è possibile utilizzare istruzioni di modifica dei dati con espressioni di tabelle comuni. La tua query di esempio sarebbe simile a questa:

WITH updated AS (UPDATE test SET description = 'test' RETURNING id)
SELECT * FROM test WHERE id IN (SELECT id FROM updated);

Fare attenzione con la selezione dalla tabella appena modificata. Puoi ottenere risultati confusi in questo modo. Poiché le query vengono eseguite nella stessa istantanea, SELECT non vedrà gli effetti dell'istruzione UPDATE.