Vóór PostgreSQL 9.1 konden INSERT/UPDATE/DELETE alleen worden gebruikt als instructies op het hoogste niveau. Dit is de reden waarom u een syntaxisfout krijgt.
Vanaf 9.1 kunt u instructies voor het wijzigen van gegevens gebruiken met algemene tabeluitdrukkingen. Uw voorbeeldquery zou er als volgt uitzien:
WITH updated AS (UPDATE test SET description = 'test' RETURNING id)
SELECT * FROM test WHERE id IN (SELECT id FROM updated);
Wees voorzichtig met het selecteren uit de zojuist gewijzigde tabel. Op die manier kun je verwarrende resultaten krijgen. Omdat de query's in dezelfde snapshot worden uitgevoerd, ziet de SELECT de effecten van de UPDATE-instructie niet.