Писането на код, защитен от блокиране, е наистина трудно. Дори когато осъществявате достъп до таблиците в същия ред, все още може да получите блокиране [1]. Написах публикация в блога си, която описва някои подходи, които ще ви помогнат да избегнете и разрешите ситуации на безизходица.
Ако искате да сте сигурни, че две оператори/транзакции никога няма да блокирате, може да успеете да го постигнете, като наблюдавате кои заключвания използва всеки израз с помощта на sp_lock системна съхранена процедура. За да направите това, трябва или да сте много бързи, или да използвате отворена транзакция с намек за задържане.
Бележки:
- Всеки оператор SELECT, който се нуждае от повече от едно заключване наведнъж, може да блокира блокиране срещу интелигентно проектирана транзакция, която грабва ключалките в обратен ред.