में अद्यतन कथन के लिए चुनें, मैं तालिका के रिकोर में फ़ील्ड का चयन करना चाहता हूं और इन फ़ील्ड में से केवल एक को अपडेट करना चाहता हूं। मैं कैसे कर सकता हूँ?PostgreSql
मैं यह कोशिश:
SELECT v.idvideo, v.title
FROM video v WHERE v.schedulingflag IS FALSE AND v.errorflag IS FALSE
ORDER BY v.idvideo LIMIT 1 FOR UPDATE ;
UPDATE video SET schedulingflag = true;
लेकिन इस तरह से यह सब रिकॉर्ड में क्षेत्र "schedulingflag" सेट सच!
हाय, मैं मेज लॉक करना चाहते हैं, तो आप अपने पिछले प्रश्न देख सकते हैं? http://stackoverflow.com/questions/14707002/lock-table-in-postgresql#comment20571089_14707002 –
मुझे एक नज़र आएगी, लेकिन अगर यह आपकी समस्या हल करती है तो कृपया इस उत्तर को स्वीकार करें। –
नोट, कि वह अद्यतन के लिए एक LIMIT 1 का उपयोग कर रहा है, इसका आम तौर पर इसका मतलब है कि उसका क्लॉज 1 से अधिक रिकॉर्ड वापस कर सकता है। अब, चूंकि मेरे पास टेबल के लिए डीडीएल नहीं है, इसलिए उसे अपनी प्राथमिक कुंजी को अद्यतन करने के लिए जो कुछ भी करना है, उसका उपयोग करना चाहिए, उसके बाद उसे अद्यतन वीडियो एसईटी शेड्यूलफ्लैग = सच जहां आईडीवीडियो =? का उपयोग करना चाहिए। कारण यह है कि भले ही वह एक ही प्रश्न (ORDER BY/LIMIT) का उपयोग करता है, फिर भी वह एक अलग रिकॉर्ड अपडेट कर सकता है (इससे पहले एक नई आईडी डाली जा सकती है) – Rahly