sql >> Databasteknik >  >> RDS >> Oracle

Utlösningstillstånd i alla rader

En trigger som utfärdar DML (inklusive SELECT) mot samma tabell som äger triggern väcker spöket för ORA-4091, undantaget för muterande tabell. Oracle ger det här felet eftersom det förväntar sig att resultatet av en transaktion är deterministiskt, och en trigger som utfärdar DML på sitt eget bord skapar osäkerhet i förfarandet.

Mutationstabell är en pålitlig indikator på dålig design, speciellt en dålig datamodell och det verkar vara fallet här.

Om värdet av en böter är beroende av resultatet av en enskild observation är det okej att BÖT är en kolumn i OBSERVATION-tabellen. Dina affärsregler indikerar dock att värdet kan bero på flera observationer, om de faller inom en viss period. I detta scenario bör böterna vara i en egen tabell. Du skulle behöva en främmande nyckel mellan OBSERVACION och MULTA för att indikera vilka observationer som omfattas av en viss böter.




  1. SQL UTLÄNDSK NYCKEL

  2. Finns det en gräns för antalet tabeller i en SQL Server-databas OCH -vy?

  3. Hur man skapar en ADDM-uppgift och kontrollerar dess rapport

  4. Hur man genererar unikt slumpmässigt värde för varje användare i laravel och lägger till det i databasen