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?