Das was du da beschreibst nennt man das "Mutating Table" Problem bei ORACLE.
Wenn du bei Google danach suchst, dann gibt es da verschiedene Ansätze um das Problem zu umgehen.
Beispielhaft hab ich dir zwei davon mal rausgesucht:
Mutating Table #1
Mutating Table #2