Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Czy procedury składowane blokują tabele/wiersze?

Możesz dostać warunki wyścigowe.

Można to zrobić w jednym oświadczeniu:

  • Możesz przypisać w UPDATE
  • Wskazówki dotyczące blokowania umożliwiają innemu procesowi pominięcie ten wiersz
  • Klauzula OUTPUT zwraca dane dzwoniącemu

Spróbuj tego... (edycja:blokada usunięta)

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

Jeśli nie, możesz potrzebować osobnego wyboru

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 ...

Zobacz to, aby uzyskać więcej informacji:Warunek wyścigu kolejki procesów SQL Server




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie możesz połączyć się z serwerem SQL 2008?

  2. Trzykolumnowy SQL PIVOT

  3. SQL do przeanalizowania ciągu klucz-wartość

  4. Jak znaleźć domyślny język użytkownika w SQL Server (T-SQL)

  5. Wyodrębnij numer tygodnia z daty w SQL Server (T-SQL)