Menulis kode deadlock-proof sangat sulit. Bahkan ketika Anda mengakses tabel dalam urutan yang sama, Anda mungkin masih menemui jalan buntu [1]. Saya menulis posting di blog saya yang menguraikan melalui beberapa pendekatan yang akan membantu Anda menghindari dan menyelesaikan situasi kebuntuan.
Jika Anda ingin memastikan dua pernyataan/transaksi tidak akan pernah menemui jalan buntu, Anda mungkin dapat mencapainya dengan mengamati kunci mana yang digunakan setiap pernyataan menggunakan sp_lock prosedur tersimpan sistem. Untuk melakukan ini, Anda harus sangat cepat atau menggunakan transaksi terbuka dengan petunjuk holdlock.
Catatan:
- Pernyataan SELECT apa pun yang membutuhkan lebih dari satu kunci sekaligus dapat menemui jalan buntu terhadap transaksi yang dirancang dengan cerdas yang mengambil kunci dalam urutan terbalik.