Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Таблица SELECT и UPDATE, така че да няма припокриване на нишки

Ако имате предвид безопасно заключване на тип опашка с паралелност, използвайте подсказки ROWLOCK, UPDLOCK, READPAST?

Условие за надпревара на опашката на процеса на SQL Server

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 Server AlwaysOn:Инсталация и конфигурация, част 2

  2. Извършване на конкатенация на низове от редове с данни в TSQL изглед (основна?)

  3. Заявка за намиране на списък с *всички* SSRS набори от данни във *всички* SSRS отчети на екземпляр на ReportServer

  4. Брой(*) срещу Брой(1) - SQL Server

  5. Как да свържете база данни на Access към SQL Server в Access 2016