Écrire du code anti-blocage est vraiment difficile. Même lorsque vous accédez aux tables dans le même ordre, vous pouvez toujours obtenir des blocages [1]. J'ai écrit un article sur mon blog qui détaille certaines approches qui vous aideront à éviter et à résoudre les situations de blocage.
Si vous voulez vous assurer que deux instructions/transactions ne se bloqueront jamais, vous pourrez peut-être y parvenir en observant les verrous que chaque instruction consomme à l'aide de sp_lock procédure stockée système. Pour ce faire, vous devez soit être très rapide, soit utiliser une transaction ouverte avec un indice de blocage.
Remarques :
- Toute instruction SELECT nécessitant plusieurs verrous à la fois peut bloquer une transaction conçue intelligemment qui saisit les verrous dans l'ordre inverse.