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

Har en insert-trigger brug for en commit-erklæring

Udløsere behøver ikke kun en COMMIT, du ikke kan sætte en i:en trigger vil ikke kompilere, hvis kroppens kode inkluderer en COMMIT (eller en rollback).

Dette skyldes, at det udløser brand under en transaktion. Når triggeren udløses, er den aktuelle transaktion stadig ikke fuldført. Når COMMIT afslutter en transaktion, der tillader dem i triggere, vil arbejdsenheden bryde.

Så ændringer, der udføres i en trigger, begås (eller rulles tilbage) af ejertransaktionen, som udstedte den DML, der udløste triggeren.

Det er rigtigt, at triggere kan køre under PRAGMA AUTONOMOUS_TRANSACTION, i hvilket tilfælde de skal have en COMMIT. Men dette er en fordel, da der er få meningsfulde anvendelser af indlejrede transaktioner i Oracle.



  1. SELECT-sætning ved hjælp af sæt Algebra

  2. PHP:flere SQL-forespørgsler i én mysql_query-sætning

  3. Opret database i Shell Script - konverter fra PHP

  4. Opret tabel DDL med Execute Immediate i Oracle Database del 2