sql >> Database >  >> RDS >> Oracle

Hoe definieer je een trigger ON COMMIT in Oracle?

Er is geen ON COMMIT-triggermechanisme in Oracle. Er zijn echter oplossingen:

  1. Je zou een gematerialiseerde weergave kunnen gebruiken met ON COMMIT REFRESH en triggers aan deze MV kunnen toevoegen. Dit zou je in staat stellen om de logica te activeren wanneer een basistabel is gewijzigd op het moment van commit . Als de trigger een fout oplevert, wordt de transactie teruggedraaid (u verliest alle niet-vastgelegde wijzigingen).

  2. Je kunt DBMS_JOB gebruiken om een ​​actie uit te stellen tot na de vastlegging. Dit zou een asynchrone actie zijn en kan in sommige gevallen wenselijk zijn (bijvoorbeeld wanneer u een e-mail wilt sturen nadat de transactie is gelukt). Als u de primaire transactie terugdraait, wordt de taak geannuleerd. De taak en de primaire sessie zijn onafhankelijk:als de taak mislukt, wordt de hoofdtransactie niet teruggedraaid.

In jouw geval zou je waarschijnlijk optie (1) kunnen gebruiken. Persoonlijk houd ik er niet van om bedrijfslogica in triggers te coderen, omdat het veel complexiteit toevoegt, maar technisch denk ik dat het mogelijk zou zijn.



  1. Hoe BIN() werkt in MariaDB

  2. Automatisch verhogen van de 'id'-waarde bij het invoegen in sqlite

  3. MySQL InnoDB Storage Engine-ondersteuning inschakelen in XAMPP-installatie

  4. Zijn externe sleutels echt nodig in een database-ontwerp?