Както забелязахте, ще бъде трудно да отговорите на вашите бизнес изисквания с тригери. Причината е, че Oracleможет актуализирайте/вмъкнете таблиците с повече от една нишка едновременно за една заявка (паралелен DML). Това означава, че вашата сесия не може да прави запитвания към таблицата, която актуализира, докато се извършва актуализацията .
Ако наистина искате да направите това с тригери, ще трябва да следвате заглавието вид логика, показана в тази статия от Том Кайт . Както виждате, не е нещо просто.
Има друг, по-прост, по-елегантен, по-лесен за поддръжка метод:използвайте процедури. Отменете правото на актуализиране/вмъкване на потребителя(ите) на приложението и напишете набор от процедури, които позволяват на приложението да актуализира колоните за състояние.
Тези процедури биха задържали заключване на родителския ред (за да предотвратят множество сесии за модифициране на един и същ набор от редове) и биха приложили вашата бизнес логика по ефективен, четим и лесен за поддръжка начин.