Jak zauważyłeś, trudno będzie odpowiedzieć na Twoje wymagania biznesowe za pomocą wyzwalaczy. Powodem jest to, że Oracle może zaktualizuj/wstaw tabele z więcej niż jednym wątkiem w tym samym czasie dla pojedynczego zapytania (równoległy DML). Oznacza to, że Twoja sesja nie może wysłać zapytania do tabeli, którą aktualizuje podczas aktualizacji .
Jeśli naprawdę chcesz to zrobić za pomocą wyzwalaczy, musisz postępować zgodnie z tytułem rodzaj logiki przedstawionej w tym artykule Toma Kyte . Jak widać, nie jest to coś prostego.
Jest jeszcze inna, prostsza, bardziej elegancka, łatwiejsza w utrzymaniu metoda:stosowanie procedur. Cofnij prawo do aktualizacji/wstawiania użytkownikom aplikacji i napisz zestaw procedur, które pozwolą aplikacji aktualizować kolumny stanu.
Procedury te blokowałyby wiersz nadrzędny (aby zapobiec wielu sesjom modyfikowania tego samego zestawu wierszy) i stosowałyby logikę biznesową w wydajny, czytelny i łatwy w utrzymaniu sposób.