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

तालिका का चयन करें और अद्यतन करें ताकि थ्रेड्स का कोई ओवरलैप न हो

यदि आपका मतलब एक समवर्ती सुरक्षित कतार प्रकार लॉकिंग है, तो ROWLOCK, UPDLOCK, READPAST संकेतों का उपयोग करें?

SQL सर्वर प्रोसेस क्यू रेस कंडीशन

BEGIN TRAN

SELECT TOP 1 @QueryID = [ID] from Table WITH (ROWLOCK, UPDLOCK, READPAST)
UPDATE Table SET [Read] = 1 WHERE [ID] = @QueryID 

COMMIT TRAN -- TRAM

हालाँकि, एक बयान में। कुछ ऐसा

WITH T AS
(
    --ORDER BY with TOP , or perhaps MIN is better?
    SELECT TOP 1 [Read], [ID] from Table
    WITH (ROWLOCK, UPDLOCK, READPAST) ORDER BY [Read]
)
UPDATE
    T
SET
    [Read] = 1;


  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. 8060 बी डेटापेज (एसक्यूएल सर्वर) में 8078 बाइट्स?

  3. पहचान जैसा कॉलम लेकिन ग्रुप बाय मापदंड पर आधारित

  4. SQL Server 2000 से 2008 माइग्रेशन - DISTINCT का उपयोग करते समय समस्या के आधार पर ऑर्डर करें

  5. SQL सर्वर में क्षैतिज रूप से दो से अधिक तालिकाओं को संयोजित करें