यह काम करने के लिए लॉकिंग पर संकेत देने के लिए आपको एक क्रमिक लेनदेन करने के लिए पर्याप्त नहीं है।
क्रमिक अलगाव स्तर अभी भी आमतौर पर "सबसे कमजोर" प्रकार के लॉक का अधिग्रहण करेगा, जो यह सुनिश्चित कर सकता है कि क्रमिक शर्तों को पूरा किया जाए (दोहराए जाने योग्य रीड्स, कोई प्रेत पंक्तियाँ आदि नहीं)
तो, आप अपनी टेबल पर एक साझा लॉक को हथिया रहे हैं जिसे आप बाद में (अपने क्रमिक लेन-देन में) एक अपडेट लॉक। यदि कोई अन्य थ्रेड साझा लॉक धारण कर रहा है तो अपग्रेड विफल हो जाएगा (यदि कोई अन्य निकाय साझा लॉक नहीं रखता है तो यह काम करेगा)।
आप शायद इसे निम्नलिखित में बदलना चाहते हैं:
SELECT * FROM SessionTest with (updlock) WHERE SessionId = @SessionId
यह सुनिश्चित करेगा कि जब चयन किया जाता है तो एक अपडेट लॉक हासिल कर लिया जाता है (इसलिए आपको लॉक को अपग्रेड करने की आवश्यकता नहीं होगी)।