есть система учета времени.. структура очень проста:
table(empid number,time_in date,time_out date)
Есть веб-сервис, через который это все работает. Логика у него тоже простая - смотрим последнюю запись, если time_in и time_out не пустые - инсертим новую строчку, если time_out пустой - делаем update.
Исходя из предположения, что никаких "защит" и "проверок" веб-сервис и клиенты не делают, как обеспечить очередность апдейтов/инсертов. То есть чтоб не было двойных time_in (без time_out).
Заменить select + (update or insert) на merge не получится, так как обновлять нужно поле, по которому определять условие самого обновления. мердж этого не умеет.
Уникальный констрейнт на (empid,time_in) тоже не выглядит надежным.
Интересует вопрос - что еще можно сделать со стороны базы данных чтоб исключить подобные ситуации.. ну и, если кто знает, best practice в таких случаях:)
Спасибо!