Je zei:
Je hebt gewoon een gedeeld leesslot nodig voor de duur van de TXN. Dit betekent dat geen enkel ander proces een "schrijf" -vergrendeling kan krijgen, in combinatie met een TABLOCK. En je hebt COUNT ook niet nodig.
...
BEGIN TRANSANCTION
SELECT TOP 1 KeyCol FROM TheTable WITH (TABLOCK, HOLDLOCK)
...
Waarom denk je dat je een UPDATE LOCK wilt?
Bewerken, na opmerking:
- "exclusief slot" betekent "slechts één proces dat de gegevens gebruikt".
- 'SERIALIZABLE' betekent in feite de sloten (gedeeld, exclusief, wat dan ook) veel langer vasthouden.
U kunt "exclusief slot" en . niet specificeren andere processen laten lezen. De concepten sluiten elkaar uit. U wilt voorkomen dat er naar de hele tabel wordt geschreven, wat een aanhoudende gedeelde/lees vergrendeling is voldoende. Dit is waar SERIALIZABLE van pas komt.
Dus:een gedeelde vergrendeling staat schrijven niet toe en kan worden gehandhaafd door deze SERIALISEERBAAR te maken