sql >> Database teknologi >  >> RDS >> Oracle

Hvordan definerer man en trigger ON COMMIT i Oracle?

Der er ingen ON COMMIT-triggermekanisme i Oracle. Der er dog løsninger:

  1. Du kan bruge en materialiseret visning med ON COMMIT REFRESH og tilføje triggere til denne MV. Dette vil give dig mulighed for at udløse logikken, når en basistabel er blevet ændret på tidspunktet for commit . Hvis triggeren udløser en fejl, vil transaktionen blive rullet tilbage (du mister alle ikke-forpligtede ændringer).

  2. Du kan bruge DBMS_JOB til at udskyde en handling til efter commit. Dette ville være en asynkron handling og kan være ønskeligt i nogle tilfælde (f.eks. når du vil sende en e-mail, efter at transaktionen er lykkedes). Hvis du ruller den primære transaktion tilbage, vil jobbet blive annulleret. Jobbet og den primære session er uafhængige:Hvis jobbet mislykkes, vil hovedtransaktionen ikke blive rullet tilbage.

I dit tilfælde kunne du sandsynligvis bruge mulighed (1). Jeg kan personligt ikke lide at kode forretningslogik i triggere, da det tilføjer en masse kompleksitet, men teknisk set tror jeg, det ville være muligt.



  1. Har du altid brug for en database til din app?

  2. Sådan migrerer du databaser til din forhandlerserver

  3. Installer PostgreSQL på Ubuntu 18.04

  4. Hvordan UNZIP en fil i PL/SQL?