Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

सीआरयूडी ऑपरेशन को रोकने वाली पंक्ति को विशेष रूप से कैसे लॉक करें

BEGIN TRAN

    SELECT 1
    FROM Table
    WITH (XLOCK, ROWLOCK)

COMMIT TRAN

वह चाल चलेगा।

संपादित करें

जैसा कि दूसरों ने बताया है, आप पढ़ने के लिए एक पंक्ति को लॉक नहीं कर सकते हैं . मुझे ऐसा करने का एकमात्र तरीका इस प्रकार है:

WITH (UPDLOCK, TABLOCK)

और यह माना जा रहा है कि एक WITH (NOLOCK) का उपयोग कभी भी SELECT स्टेटमेंट में नहीं किया जाता है (जिसे वैसे भी टाला जाना चाहिए)।

मैंने इसका परीक्षण किया और यह काम करेगा, हालांकि टैबलेट का उपयोग केवल चरम मामलों में ही किया जाना चाहिए। निश्चित रूप से यदि समेकन की आवश्यकता है, तो यह एक खराब समाधान है और लॉकिंग के किसी अन्य रूप की आवश्यकता होगी। एक तरीका यह है कि थोड़ा कॉलम "उपलब्ध सही/गलत" अपडेट किया जाए और केवल उन पंक्तियों को पढ़ा जाए जहां उपलब्ध =सही है। जैसा कि @gbn ने सुझाव दिया था, READPAST कर सकता था इसके साथ प्रयोग करें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं कैसे जांच सकता हूं कि SQL सर्वर बाधा मौजूद है या नहीं?

  2. SQL सर्वर में XML चर के माध्यम से पुनरावृति

  3. एक्सेल से कॉलम नामों में जोड़े गए उद्धरणों को हटाना SQL सर्वर 2008 आयात करें

  4. क्या होगा जब टाइमस्टैम्प (पंक्ति संस्करण) अतिप्रवाह?

  5. SQL सर्वर में SA लॉगिन पर पासवर्ड बदलें (T-SQL उदाहरण)