Før PostgreSQL 9.1 kunne INSERT/UPDATE/DELETE kun bruges som sætninger på øverste niveau. Det er derfor, du får en syntaksfejl.
Fra 9.1 kan du bruge datamodificerende udsagn med almindelige tabeludtryk. Dit eksempelforespørgsel ville se sådan ud:
WITH updated AS (UPDATE test SET description = 'test' RETURNING id)
SELECT * FROM test WHERE id IN (SELECT id FROM updated);
Vær forsigtig med at vælge fra den netop ændrede tabel. Du kan få forvirrende resultater på den måde. Fordi forespørgslerne udføres i det samme øjebliksbillede, vil SELECT ikke se virkningerne af UPDATE-sætningen.