sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server ROWLOCK över en SELECT om den inte existerar INSERT transaktion

En förklaring...

  • ROWLOCK/PAGELOCK är granularitet
  • XLOCK är läge

Granularitet och isoleringsnivå och läge är ortogonala.

  • Granularitet =vad som är låst =rad, sida, tabell (PAGLOCK, ROWLOCK, TABLOCK )

  • Isolationsnivå =låstid, samtidighet (HOLDLOCK, READCOMMITTED, REPEATABLEREAD, SERIALIZABLE )

  • Läge =delning/exklusivitet (UPDLOCK, XLOCK )

  • "kombinerad" t.ex. NOLOCK, TABLOCKX

XLOCK skulle ha låst raden uteslutande som du vill. ROWLOCK/PAGELOCK skulle inte ha.




  1. viloläge uppdateras delvis när entitet analyseras med json

  2. MySQL INT betydelse

  3. Är det möjligt att använda användardefinierade aggregat (clr) med fönsterfunktioner (över)?

  4. Hur man använder SUBSTRING() i MySQL