Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server ROWLOCK sur un SELECT s'il n'existe pas de transaction INSERT

Une explication...

  • ROWLOCK/PAGELOCK est la granularité
  • XLOCK est le mode

La granularité et le niveau et le mode d'isolement sont orthogonaux.

  • Granularité =ce qui est verrouillé =ligne, page, table (PAGLOCK, ROWLOCK, TABLOCK )

  • Niveau d'isolement =durée du verrouillage, concurrence (HOLDLOCK, READCOMMITTED, REPEATABLEREAD, SERIALIZABLE )

  • Mode =partage/exclusivité (UPDLOCK, XLOCK )

  • "combiné" par exemple NOLOCK, TABLOCKX

XLOCK aurait verrouillé la ligne exclusivement comme vous le souhaitez. ROWLOCK/PAGELOCK n'aurait pas.