Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL Server ROWLOCK su una transazione SELECT se non esiste INSERT

Una spiegazione...

  • ROWLOCK/PAGELOCK è granularità
  • XLOCK è la modalità

La granularità e il livello e la modalità di isolamento sono ortogonali.

  • Granularità =cosa è bloccato =riga, pagina, tabella (PAGLOCK, ROWLOCK, TABLOCK )

  • Livello di isolamento =durata del blocco, concorrenza (HOLDLOCK, READCOMMITTED, REPEATABLEREAD, SERIALIZABLE )

  • Modalità =condivisione/esclusività (UPDLOCK, XLOCK )

  • "combinato" es. NOLOCK, TABLOCKX

XLOCK avrebbe bloccato la riga esclusivamente come desideri. ROWLOCK/PAGELOCK non avrebbe.