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

Съхранените процедури заключват ли таблици/редове?

Може да получите условие за състезание.

Може да се направи с един оператор:

  • Можете да зададете в АКТУАЛИЗАЦИЯ
  • Подсказките за заключване позволяват пропускане на друг процес този ред
  • Клаузата OUTPUT връща данни на извикващия

Опитайте това... (редактиране:задържането е премахнато)

Update TOP (1) ServerLoginUsers WITH (ROWLOCK, READPAST)
OUTPUT INSERTED.*
SET
   AssignedTo = @User, AssignedToDate = getdate(), SourcePool = @UserPool
WHERE
   AssignedTo is null and [TsServer] = @Server   -- not needed -> and UserName = @ServerUser

Ако не, може да се нуждаете от отделен избор

Update TOP (1) ServerLoginUsers WITH (ROWLOCK, READPAST)
SET
    -- yes, assign in an update
   @ServerUser = UserName,
   -- write
   AssignedTo = @User, AssignedToDate = getdate(), SourcePool = @UserPool
OUTPUT INSERTED.*
WHERE
   AssignedTo is null and [TsServer] = @Server   -- not needed -> and UserName = @ServerUser

SELECT ...

Моля, вижте това за повече:Условие за надпревара на опашката на SQL Server Process




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Връща повече от 24 часа във формат hh:mm:ss в SQL server 2008

  2. Как да генерирам скриптове за всички таблици с един ход в SQL Server 2000?

  3. Service Broker или SqlDependency в SqlLocalDb?

  4. Как да получите дефиниция на изчислена колона в SQL Server с помощта на T-SQL

  5. Как мога програмно да проверя (анализирам) валидността на TSQL оператор?