में अद्यतन रिटर्निंग क्लॉज से चयन नहीं कर सकता है, मैं एक और अधिक जटिल क्वेरी से समस्या को अलग करता हूं। यहाँ परीक्षण परिदृश्यपोस्टग्रेस
DROP TABLE test;
CREATE TABLE test (
id integer,
description varchar(100)
);
INSERT INTO test(id, description) VALUES (1,'new');
INSERT INTO test(id, description) VALUES (2,'new');
अगर मैं क्वेरी चलाने:
SELECT * FROM test WHERE id IN (UPDATE test set description='test' RETURNING id)
मैं निम्न त्रुटि हो रही है: पर या निकट "परीक्षण" लाइन 1 सिंटेक्स त्रुटि:
त्रुटि: चयन करें * आईडी से (आईडी परीक्षण परीक्षा विवरण = 'परीक्षण' आरई ... ^
*** Fehler ** *
त्रुटि: पर सिंटेक्स त्रुटि या निकट "परीक्षण" एसक्यूएल स्थिति: 42,601 Zeichen: 37
लेकिन अगर मैं केवल statemennt चलाने
:UPDATE test set value='test' RETURNING id
2 पंक्तियों के साथ एक परिणाम मिलता है
मुझे लगता है कि परिणाम substitude अगर मैं की तरह एक प्रश्न होगा:
SELECT * FROM test WHERE id IN (1,2);
परिणाम के साथ
:
1; "परीक्षण" 2; "परीक्षण"
मुझे अपने शुरुआती वक्तव्य के साथ एक ही परिणाम क्यों नहीं मिलता?
वे अलग बयान होना है। तथ्य यह है कि दो पंक्तियों को अद्यतन किया जा रहा है, यह समस्याएं पैदा करने की संभावना है, कभी भी एक पंक्ति/मूल्य वापस आने पर वापस लौटने की कोशिश नहीं की जाती है। –