PostgreSQL 9.1 से पहले INSERT/UPDATE/DELETE का उपयोग केवल शीर्ष स्तर के बयान के रूप में किया जा सकता था। यही कारण है कि आपको सिंटैक्स त्रुटि मिल रही है।
9.1 से शुरू करके आप सामान्य तालिका अभिव्यक्तियों के साथ डेटा-संशोधित कथनों का उपयोग कर सकते हैं। आपकी उदाहरण क्वेरी कुछ इस तरह दिखेगी:
WITH updated AS (UPDATE test SET description = 'test' RETURNING id)
SELECT * FROM test WHERE id IN (SELECT id FROM updated);
हाल ही में संशोधित तालिका से चयन करने में सावधानी बरतें। इस तरह आप भ्रमित करने वाले परिणाम प्राप्त कर सकते हैं। क्योंकि क्वेरीज़ एक ही स्नैपशॉट में निष्पादित की जाती हैं, SELECT को UPDATE स्टेटमेंट का प्रभाव नहीं दिखाई देगा।