Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server ROWLOCK sobre um SELECT se não existir transação INSERT


Uma explicação...
  • ROWLOCK/PAGELOCK é granularidade
  • XLOCK é o modo

O nível e modo de granularidade e isolamento são ortogonais.

  • Granularidade =o que está bloqueado =linha, página, tabela (PAGLOCK, ROWLOCK, TABLOCK )

  • Nível de isolamento =duração do bloqueio, simultaneidade (HOLDLOCK, READCOMMITTED, REPEATABLEREAD, SERIALIZABLE )

  • Modo =compartilhamento/exclusividade (UPDLOCK, XLOCK )

  • "combinado" por exemplo NOLOCK, TABLOCKX

XLOCK teria bloqueado a linha exclusivamente como você deseja. ROWLOCK/PAGELOCK não teria.