Att skriva dödlägessäker kod är riktigt svårt. Även när du kommer åt borden i samma ordning kan du fortfarande få deadlocks [1]. Jag skrev ett inlägg på min blogg som utvecklar genom några tillvägagångssätt som hjälper dig att undvika och lösa dödlägen.
Om du vill säkerställa att två uttalanden/transaktioner aldrig kommer att låsa sig kan du kanske uppnå det genom att observera vilka lås varje uttalande använder med sp_lock system lagrad procedur. För att göra detta måste du antingen vara väldigt snabb eller använda en öppen transaktion med ett hålllåstips.
Anmärkningar:
- Alla SELECT-satser som behöver mer än ett lås samtidigt kan låsa fast mot en intelligent designad transaktion som tar tag i låsen i omvänd ordning.