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.