Как вы упоминаете, настройки трансанкции помогут вам выполнить одну операцию.Лучший способ применить ограничения такого рода - обеспечить, чтобы ваша реляционная модель была вынуждена не принимать 2-ю операцию после успешного выполнения 1-й.
Вместо того, чтобы выполнять обновление строки, скажем, update.... seat = "зято ", создайте таблицу бронирования (клиент, рейс, место) с ограничением (column: seat = unique) (посмотрите документацию, чтобы узнать синтаксис этого при создании таблицы).Таким образом, ваш процесс резервирования становится вставкой в таблицу резервирования, и вы можете положиться на СУБД, чтобы обеспечить соблюдение ваших реляционных ограничений для поддержания работоспособности вашей бизнес-модели.
Например, пусть t1 будет более ранним временем работы, у вас будет:
t1=> insert into reservations(customer1,flight-x,seat-y) // succeeds. Customer 1 reserved the seat-y
t2=> insert into reservations(customer2,flight-x,seat-y) // fails with RDBMS unique constrain violated.
Единственный способ зарезервировать seat-y
снова - это сначала удалить предыдущее резервирование, что, вероятно,ваш бизнес-процесс хочет достичь.