एक आदेश के निष्पादन के दौरान (आमतौर पर शुरुआत में या उसके निकट) ताले लिए जाते हैं। ताले (सलाहकार ताले को छोड़कर) केवल केवल जारी किए जाते हैं जब कोई लेन-देन करता है या वापस रोल करता है। कोई अनलॉक के लिए
. नहीं है , न ही कोई अनलॉक
है तालिका-स्तर LOCK
. के प्रभावों को उलटने के लिए आदेश आज्ञा। यह सब PostgreSQL दस्तावेज़ीकरण के समवर्ती नियंत्रण अनुभाग में समझाया गया है।
लॉक जारी करने के लिए आपको अपना लेन-देन करना होगा या रोलबैक करना होगा।
इसके अतिरिक्त, यह पूछने का वास्तव में कोई मतलब नहीं है कि "क्या यह पंक्ति पहले से ही किसी अन्य समवर्ती लेनदेन द्वारा हटा दी गई है"। यह वास्तव में तब तक नहीं हटाया जाता है जब तक कि पंक्ति को हटाने वाला लेन-देन नहीं हो जाता है... और फिर भी, हो सकता है कि यह हटा दिया गया हो और पंक्ति को फिर से सम्मिलित किया गया हो या किसी अन्य समवर्ती लेनदेन ने पंक्ति को फिर से सम्मिलित किया हो।
क्या आप किसी भी मौके से कार्य कतार या संदेश कतार प्रणाली का निर्माण कर रहे हैं, क्योंकि यदि ऐसा है, तो वह समस्या हल हो गई है और आपको उस असामान्य रूप से जटिल पहिया को फिर से शुरू करने की कोशिश नहीं करनी चाहिए। PGQ, ActiveMQ, RabbitMQ, ZeroMQ, आदि देखें। क्योंकि इसका परीक्षण किया जा रहा है, लेकिन लेखन के समय इसे जारी नहीं किया गया है)।
मेरा सुझाव है कि आप उस अंतर्निहित समस्या के अधिक विस्तृत विवरण के साथ एक नया प्रश्न पोस्ट करें जिसे आप हल करने का प्रयास कर रहे हैं। आप मान रहे हैं कि आपकी समस्या का समाधान "पता लगाएं कि क्या पंक्ति पहले ही हटा दी गई है" या "पंक्ति को अनलॉक करें"। यह शायद वास्तव में समाधान नहीं है। यह कुछ ऐसा है जैसे कोई कहता है "मैं पेट्रोल कहां से खरीदूं" जब उनकी पुश-बाइक नहीं जाती है तो वे मानते हैं कि यह ईंधन से बाहर है। ईंधन समस्या नहीं है, समस्या यह है कि पुश बाइक ईंधन नहीं लेती हैं और आपको उन्हें पेडल करना पड़ता है।
पृष्ठभूमि स्पष्ट कीजिए। समझाएं कि आप क्या हासिल करने की कोशिश कर रहे हैं। इन सबसे ऊपर, स्यूडोकोड पोस्ट न करें, वह वास्तविक कोड पोस्ट करें जिसमें आपको समस्या हो रही है , अधिमानतः एक स्व-निहित और चलने योग्य रूप में।