Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Warunek wyzwalania we wszystkich wierszach

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ą.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wywołanie procedury składowanej Oracle z C#?

  2. Jak przesłać plik zrzutu Oracle do bazy danych Oracle:AWS RDS

  3. Jak przekonwertować starszą instrukcję lewego sprzężenia zewnętrznego w Oracle?

  4. Jak korzystać z globalnej tabeli tymczasowej Oracle?

  5. Nie mogę połączyć mojej instancji RDS Oracle z serwerem PHP