В качестве примера того, почему ваша логика потерпит неудачу, возьмите сценарий, в котором PARENT A имеет запись 1 с рекордами CHILD 1A и 1B. STATE 1A - 10 и 1B - 15, поэтому вы хотите, чтобы ваш родитель был равен 10.
Теперь кто-то обновляет состояние 1A до 20, а в то же время кто-то удаляет 1B. Поскольку удаление 1B не завершено, обновление транзакции 1A по-прежнему будет видеть 1B и будет хотеть установить состояние родителя на 15, в то время как транзакция, удаляющая 1B, увидит старое незафиксированное значение 1A и будет хотеть, чтобы родительское состояние было 10.
Если вы де-нормализуете это, вы должны быть очень осторожны с блокировкой, чтобы, прежде чем вставлять / обновлять / удалять любые дочерние записи, родительская запись заблокирована, выполнить ваши изменения, выбрать все дочерние записи, обновить родительский элемент, а затем зафиксировать блокировку. Хотя это можно сделать с помощью триггеров, вам лучше всего сохранить хранимую процедуру.