Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Um gatilho de inserção precisa de uma instrução de confirmação


Não só os gatilhos não precisam de um COMMIT que você não pode colocar:um gatilho não compilará se o código do corpo incluir um COMMIT (ou um rollback).

Isso ocorre porque os gatilhos são acionados durante uma transação. Quando o gatilho é acionado, a transação atual ainda não está concluída. À medida que o COMMIT encerra uma transação, permitindo-os em gatilhos, quebraria a unidade de trabalho.

Portanto, as alterações executadas em um gatilho são confirmadas (ou revertidas) pela transação proprietária que emitiu o DML que disparou o gatilho.

É verdade que os triggers podem rodar sob o PRAGMA AUTONOMOUS_TRANSACTION, nesse caso eles devem ter um COMMIT. Mas este é um caso extremo, pois há poucos usos significativos de transações aninhadas no Oracle.