Du sagde:
Du har blot brug for en delt læselås, så længe TXN'et varer. Det betyder, at ingen anden proces kan få en "skrive"-lås sammen med en TABLOCK. Og du behøver heller ikke COUNT.
...
BEGIN TRANSANCTION
SELECT TOP 1 KeyCol FROM TheTable WITH (TABLOCK, HOLDLOCK)
...
Hvorfor tror du, du vil have en OPDATERINGSLÅS?
Rediger efter kommentar:
- "eksklusiv lås" betyder "kun én proces, der bruger dataene".
- "SERIALISERBAR" betyder grundlæggende at holde låsene (delte, eksklusive, uanset hvad) i meget længere tid.
Du kan ikke angive "eksklusiv lås" og tillade andre processer at læse. Begreberne udelukker hinanden. Du vil forhindre skrivninger til hele tabellen, som vedvarede delt/læs lås vil gøre. Det er her SERIALIZABLE kommer ind i billedet.
Fra "Låsetilstande"
Så:en delt lås tillader ikke skrivning og kan fås til at fortsætte ved at gøre den SERIELISERbar