Před PostgreSQL 9.1 bylo INSERT/UPDATE/DELETE možné používat pouze jako příkazy nejvyšší úrovně. To je důvod, proč se zobrazuje chyba syntaxe.
Počínaje verzí 9.1 můžete používat příkazy upravující data s běžnými tabulkovými výrazy. Váš příklad dotazu by vypadal takto:
WITH updated AS (UPDATE test SET description = 'test' RETURNING id)
SELECT * FROM test WHERE id IN (SELECT id FROM updated);
Buďte opatrní při výběru z právě upravené tabulky. Můžete tak získat matoucí výsledky. Protože jsou dotazy prováděny ve stejném snímku, SELECT neuvidí účinky příkazu UPDATE.