Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server ROWLOCK über eine SELECT if not exist INSERT-Transaktion

Eine Erklärung...

  • ROWLOCK/PAGELOCK ist Granularität
  • XLOCK ist Modus

Granularität und Isolationsstufe und Modus sind orthogonal.

  • Granularität =was gesperrt ist =Zeile, Seite, Tabelle (PAGLOCK, ROWLOCK, TABLOCK )

  • Isolationsstufe =Sperrdauer, Parallelität (HOLDLOCK, READCOMMITTED, REPEATABLEREAD, SERIALIZABLE )

  • Modus =Teilen/Exklusivität (UPDLOCK, XLOCK )

  • "kombiniert" zB NOLOCK, TABLOCKX

XLOCK hätte die Zeile wie gewünscht exklusiv gesperrt. ROWLOCK/PAGELOCK hätte nicht.