sql >> Database >  >> RDS >> Oracle

Triggervoorwaarde in alle rijen

Een trigger die DML (inclusief SELECT) uitgeeft tegen dezelfde tabel die eigenaar is van de trigger, roept het spook op van ORA-4091, de muterende tabeluitzondering. Oracle gooit deze fout weg omdat het verwacht dat de uitkomst van een transactie deterministisch is, en een trigger die DML op zijn eigen tafel uitgeeft, introduceert onzekerheid in de procedure.

Mutatietabel is een betrouwbare indicator van een slecht ontwerp, met name een slecht datamodel en dat lijkt hier het geval te zijn.

Als de waarde van een boete afhankelijk is van de uitkomst van een enkele waarneming, dan mag FINE een kolom zijn in de OBSERVACION-tabel. Uw bedrijfsregels geven echter aan dat de waarde afhankelijk kan zijn van meerdere waarnemingen, als deze binnen een bepaalde periode vallen. In dit scenario zou de boete in een eigen tabel moeten staan. U hebt een externe sleutel nodig tussen OBSERVACION en MULTA om aan te geven welke waarnemingen onder een bepaalde boete vallen.




  1. MySQL-behuizing met invoegen en bijwerken

  2. Verschil tussen twee datums in postgresql

  3. ORA-01791 Pl-Sql-fout

  4. Doctrine2.3 en OneToOne-cascade persisteren lijkt niet te werken