BeginTransaction का मतलब यह नहीं है कि "आपका लेनदेन शुरू हो गया है और सब कुछ लॉक हो गया है"। यह केवल RDBMS को लेन-देन शुरू करने के आपके इरादे के बारे में सूचित करता है और यह कि अब से आपको जो कुछ भी करना चाहिए उसे परमाणु माना जाना चाहिए।
इसका मतलब है कि आप बीइंग ट्रांजैक्शन को कॉल कर सकते हैं और मैं आपके डेटाबेस में सभी टेबल से सभी डेटा हटा सकता हूं और आरडीबीएमएस खुशी से मुझे ऐसा करने देगा। उम्मीद है, यह मुझे डीबी छोड़ने नहीं देना चाहिए क्योंकि आपके पास इसके लिए एक खुला कनेक्शन है, हालांकि, आप इन दिनों कभी नहीं जानते। कुछ अनिर्दिष्ट विशेषताएं हो सकती हैं जिनके बारे में मुझे जानकारी नहीं है।
परमाणु का अर्थ है कि कोई भी क्रिया या क्रियाओं का समूह एक के रूप में किया जाना चाहिए। यदि उनमें से कोई एक विफल हो जाता है तो वे सभी विफल हो जाते हैं। यह सब कुछ या कुछ नहीं की अवधारणा है।
ऐसा लगता है कि आप तीन पंक्तियों को एक तालिका में सम्मिलित कर रहे हैं। यदि आपकी तालिका खाली है या पंक्तियों की संख्या बहुत कम है, तो यह आपके RDBMS के LOCK ESCALATION नियमों के आधार पर पूरी तालिका को लॉक कर सकती है। हालाँकि, यदि यह एक बड़ी या बहुत बड़ी या विभाजित तालिका है तो LOCK वृद्धि नियम तालिका लॉक की गारंटी नहीं दे सकते हैं। इसलिए, कई लेन-देन के लिए एक ही समय में आपकी तालिका में पंक्तियों को सम्मिलित करना अभी भी संभव हो सकता है। यह सब इस बात पर निर्भर करता है कि RDBMS इस स्थिति को कैसे संभालता है और आपका डेटा मॉडल कैसे संरचित है।
अब आपके प्रश्न का उत्तर देने के लिए:
सुझाव - डेटा डालने से पहले पूरी तालिका को लॉक करने का तरीका खोजें।
हालाँकि, यह आमतौर पर अच्छा नहीं होता है, लेकिन मैं यह मान रहा हूँ कि आपके पास ऐसा करने का एक उचित कारण है।
आशा है कि यह मदद करता है।