Zoals u hebt gemerkt, zal het moeilijk zijn om uw zakelijke vereisten met triggers te beantwoorden. De reden is dat Oracle mag update/voeg de tabellen in met meer dan één thread tegelijk voor een enkele query (parallelle DML). Dit houdt in dat uw sessie geen query kan uitvoeren op de tabel die wordt bijgewerkt terwijl de update plaatsvindt .
Als je dit echt met triggers wilt doen, moet je de titel soort logica getoond in dit artikel door Tom Kyte . Zoals je kunt zien is het niet iets eenvoudigs.
Er is een andere, eenvoudigere, elegantere, gemakkelijker te onderhouden methode:gebruik procedures. Herroep het recht van update/invoegen voor de gebruiker(s) van de applicatie en schrijf een reeks procedures waarmee de applicatie de statuskolommen kan bijwerken.
Deze procedures zouden de bovenliggende rij vergrendelen (om te voorkomen dat meerdere sessies dezelfde reeks rijen wijzigen) en zouden uw bedrijfslogica op een efficiënte, leesbare en gemakkelijk te onderhouden manier toepassen.