Jeśli masz indeks na tblAreas.AreaID, to każda transakcja, która zawiera WHERE tblAreas.AreaID in (...)
zablokuje indeks dla tych wpisów. Nie ma znaczenia, czy same wiersze istnieją, czy nie. Ta blokada uniemożliwi innej transakcji wstawienie wpisów dla tych identyfikatorów. Więc myślę, że nie musisz robić żadnej z twoich sugestii. Wystarczy zapytać, czy wszystkie obszary są dostępne dla Twojego terytorium, aby uzyskać blokadę, której potrzebujesz, aby atomowo wprowadzić swoje terytorium.
Może to stanowić pewien problem, ponieważ identyfikatory obszarów nie są unikalne w całej grze, więc może wystąpić fałszywa serializacja między obszarami o tym samym identyfikatorze na różnych mapach. Pomocne może być dodanie mapID do tabeli tblAreas, dzięki czemu można zamiast tego utworzyć indeks (mapID, areaID) do wyszukiwania, co pozwoli uniknąć fałszywych kolizji w indeksie. (To zdenormalizuje twój schemat, czego możesz nie chcieć robić z innych powodów.)