sql >> Database >  >> RDS >> Oracle

Heeft een insert-trigger een commit-instructie nodig?

Niet alleen hebben triggers geen COMMIT nodig waar je er ook geen kunt plaatsen:een trigger wordt niet gecompileerd als de body-code een COMMIT (of een rollback) bevat.

Dit komt omdat er tijdens een transactie brand wordt geactiveerd. Wanneer de trigger wordt geactiveerd, is de huidige transactie nog steeds niet voltooid. Als COMMIT een transactie beëindigt, zou het toestaan ​​van triggers de werkeenheid breken.

Wijzigingen die in een trigger worden uitgevoerd, worden dus vastgelegd (of teruggedraaid) door de eigenaarstransactie die de DML heeft uitgegeven die de trigger heeft geactiveerd.

Het is waar dat triggers kunnen worden uitgevoerd onder de PRAGMA AUTONOMOUS_TRANSACTION, in welk geval ze een COMMIT moeten hebben. Maar dit is een randgeval, aangezien er weinig zinvolle toepassingen zijn van geneste transacties in Oracle.



  1. 4 manieren om gevoelige informatie van uw klanten te beschermen

  2. Hoe een standaardwaarde weergeven als er geen overeenkomst is gevonden in een zoekopdracht?

  3. Hoe de records van de vorige dag uit de mysql-tabel te halen?

  4. heb geen toegang tot fortrabbit mysql db via terminal (ssh)