sql >> Databáze >  >> RDS >> Oracle

Vyžaduje spouštěč vložení příkaz commit?

Nejenže spouštěče nepotřebují COMMIT, ale nemůžete ho vložit:spouštěč se nezkompiluje, pokud kód těla obsahuje COMMIT (nebo vrácení zpět).

Je to proto, že během transakce spouští požár. Když se spustí aktivační událost, aktuální transakce stále není dokončena. Protože COMMIT ukončí transakci, která by jim umožnila spouštět, narušilo by to jednotku práce.

Změny provedené ve spouštěči jsou tedy potvrzeny (nebo vráceny zpět) vlastní transakcí, která vydala DML, který spouštěč spustil.

Je pravda, že triggery mohou běžet pod PRAGMA AUTONOMOUS_TRANSACTION, v takovém případě musí mít COMMIT. Ale to je okrajový případ, protože v Oracle existuje jen málo smysluplných použití vnořených transakcí.



  1. Plsql k přepsání čísla (měny) na italskou měnu bez pevně zakódovaného čísla překladu

  2. Proč MySQL používá latin1_swedish_ci jako výchozí?

  3. Nahraďte hodnotu null předchozí dostupnou hodnotou v dotazu serveru SQL řádků

  4. Python Mysql, příkazy nejsou synchronizované; tento příkaz nyní nemůžete spustit