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

O COMMIT é necessário após cada EXECUTE IMMEDIATE?


As únicas vezes que você é realmente forçado a se comprometer, exceto no final de uma transação comercial, são:
  1. Ao executar o DDL:a execução do DDL é encapsulada em um par de commits implícitos.
  2. Após inserção de caminho direto:a tabela não pode ser lida até que a inserção seja confirmada.

Como comenta cavalheiresco, o ponto correto para se comprometer é quando a transação comercial estiver concluída. Caso contrário, você precisa escrever algum código para detectar e corrigir transações parcialmente concluídas e confirmadas que deixaram o banco de dados em um estado logicamente inconsistente (por exemplo, um registro INVOICE existe sem nenhum registro INVOICE_DETAIL).