Jika Anda memiliki indeks di tblAreas.AreaID, maka setiap transaksi yang menyertakan WHERE tblAreas.AreaID in (...)
akan mengunci indeks untuk entri tersebut. Tidak masalah apakah baris itu sendiri ada atau tidak. Kunci itu akan mencegah transaksi lain memasukkan entri apa pun untuk ID tersebut. Jadi saya rasa Anda tidak perlu melakukan salah satu dari saran Anda. Hanya menanyakan untuk melihat apakah semua area tersedia untuk wilayah Anda akan memberi Anda kunci yang Anda butuhkan untuk memasukkan wilayah Anda secara atom.
Ini mungkin sedikit masalah karena ID area Anda tidak unik di seluruh game, jadi mungkin ada beberapa serialisasi palsu antara area dengan ID yang sama di peta yang berbeda. Mungkin membantu untuk menambahkan mapID ke tabel tblAreas Anda sehingga Anda dapat membuat indeks (mapID, areaID) untuk mencari sebagai gantinya, yang akan menghindari tabrakan palsu pada indeks. (Itu akan mendenormalisasi skema Anda, yang mungkin tidak ingin Anda lakukan karena alasan lain.)