Wyzwalacz, który wysyła DML (w tym SELECT) do tej samej tabeli, która jest właścicielem wyzwalacza, wywołuje widmo ORA-4091, wyjątku tabeli mutacji. Oracle odrzuca ten błąd, ponieważ oczekuje, że wynik transakcji będzie deterministyczny, a wyzwalacz, który wyśle DML na swoim własnym stole, wprowadza niepewność do postępowania.
Tabela mutacji jest wiarygodnym wskaźnikiem złego projektu, w szczególności złego modelu danych i wydaje się, że tak jest w tym przypadku.
Jeśli wartość grzywny jest zależna od wyniku pojedynczej obserwacji, to jest w porządku, aby FINE była kolumną w tabeli OBSERWACJA. Jednak Twoje reguły biznesowe wskazują, że wartość może zależeć od kilku obserwacji, jeśli mieszczą się one w określonym okresie. W tym scenariuszu grzywna powinna znajdować się w osobnej tabeli. Potrzebujesz klucza obcego między OBSERVACION a MULTA, aby wskazać, które obserwacje są objęte konkretną grzywną.