Ако имате индекс на tblAreas.AreaID, тогава всяка транзакция, която включва WHERE tblAreas.AreaID in (...)
ще заключи индекса за тези записи. Няма значение дали самите редове съществуват или не. Това заключване ще попречи на друга транзакция да вмъкне записи за тези идентификатори. Така че не мисля, че трябва да правите нито едно от вашите предложения. Само запитване, за да видите дали всички области са налични за вашата територия, ще ви осигури ключалките, които са ви необходими, за да вмъкнете територията си атомно.
Това може да е малък проблем, тъй като идентификаторите на вашите зони не са уникални за цялата игра, така че може да има някаква фалшива сериализация между области със същия идентификатор в различни карти. Може да ви помогне да добавите mapID към вашата таблица tblAreas, за да можете да направите индекс (mapID, areaID), който да търсите вместо това, което ще избегне фалшиви колизии в индекса. (Това би денормализирало вашата схема, което може да не искате да правите по други причини.)