क्या कोई तरीका है कि कोई परीक्षण कर सकता है कि ओरेकल में अपडेट के लिए एक पंक्ति लॉक हो गई है?आप कैसे जांचते हैं कि अद्यतन के लिए एक पंक्ति लॉक है या नहीं?
select * from SOME_TABLE where THE_ID = 1000 for update;
किसी अन्य उपयोगकर्ता मैं अगर THE_ID = 1000
साथ पंक्ति लॉक किया गया है जाँच करना चाहते हैं के साथ:
उदाहरण के लिए, निम्न क्वेरी, एक उपयोगकर्ता द्वारा किया लगता है। अगर मैं एक अद्यतन या कुछ कोशिश करता हूं तो दूसरा उपयोगकर्ता अवरुद्ध हो जाता है और प्रतीक्षा करता रहता है (वह नहीं चाहता)।
मैं भी दूसरे उपयोगकर्ता के साथ निम्न क्वेरी चलाने की कोशिश की है:
select * from SOME_TABLE where THE_ID = 1000 for update NOWAIT;
जब से मैं एक ही पंक्ति पर दो ताले नहीं लगा सकेंगे इस असफल हो जायेगी। और यह करता है। मुझे एक "ओआरए-00054: संसाधन व्यस्त है और NOWAIT निर्दिष्ट त्रुटि के साथ अधिग्रहण" मिलता है। क्या मैं हमेशा लॉक की उपस्थिति की जांच करने के लिए इस त्रुटि पर भरोसा कर सकता हूं, या क्या यह निर्धारित करने का एक सरल और साफ तरीका है कि कोई पंक्ति लॉक है या नहीं?
धन्यवाद!
आपको चाहिए इस त्रुटि मिलती है "ORA-00054: व्यस्त संसाधन और प्रतीक्षा नहीं के साथ प्राप्त निर्दिष्ट" - आप सुनिश्चित करें कि आपके उपयोगकर्ता तालिका देख सकते हैं कर रहे हैं? – SeriousCallersOnly
@ SeriousCallersOnly: धन्यवाद, मैं वास्तव में ": व्यस्त संसाधन और प्रतीक्षा नहीं निर्दिष्ट त्रुटि के साथ प्राप्त ORA-00054" हो रहा है। ओआरए -00 9 42 को मेरे ऐप की एक और परत से फेंक दिया गया था। उसके लिए माफ़ करना। मैं सवाल संपादित करूंगा। –