Jak uniknąć błędu ORA-04091 w wyzwalaczu

Mam wyzwalacz po aktualizacji (wyzwalacz A) w tabeli A, który może wprowadzać zmiany w tabeli B.

Mam również wyzwalacz po aktualizacji (Trigger B) w tabeli B, który nie wprowadza żadnych zmian, ale wysyła zapytanie do tabeli A do pewnego sprawdzenia poprawności w denormalizacji.

Tak więc wyzwalacz B może strzelać na dwa sposoby:

jeśli bezpośrednio aktualizuję tabelę B lubjeśli zaktualizuję tabelę A i pożary Trigger A, powodując aktualizację tabeli B.

W przypadku 2 otrzymuję ORA-04091: nazwa tabeli jest mutująca, wyzwalacz / funkcja może nie widzieć błędu. To wydaje się poprawne.

Chcę sprawdzić w Wyzwalaczu B, jeśli tabela A jest „w złym stanie” i przedwczesnym zakończeniem (w tym przypadku nie trzeba uruchamiać kontroli poprawności).

Jaki jest najlepszy sposób na przetestowanie tego w moim spuście? Po prostu dodaj program obsługi wyjątków, który połyka wyjątek? Czy jest coś bardziej wdzięcznego?

questionAnswers(1)

yourAnswerToTheQuestion