› Fóruns › Banco de dados Oracle › Remover o auto commit nos comando dml › Remover o auto commit nos comando dml
Olá,
Partindo do princípio de conhecer a arquitetura do banco, não faria o mínimo sentido ter esta opção.
Basicamente um DDL é composto de:
BEGIN
COMMIT;
COMANDO DDL;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RAISE;
END;
Por que o primeiro commit?
Basicamente, para dar um “OK” em qualquer transação que a própria sessão tenha deixado em aberto, imagine o seu DDL lockado por causa de um delete que você não commitou?
E também para garantir a integridade das informações até aquele ponto.
E o segundo commit?
Basicamente para salvar as alterações no dicionário de dados, afinal, você acaba de alterar a estrutura de um objeto que pode ser compartilhado por mais sessões, que podem inseriralterardeletar dados e quem podem, caso sua alteração não seja transparente, comprometer a integridade das informações.
O problema aqui não está no banco e sim na forma como estes scripts ou como a aplicação é tratada, na minha humilde opinião, o melhor caminho é separar as alterações (DMLDDL) sempre que possível.
A única maneira de você fazer isso dentro de uma mesma sessão é usando o Autonomous Transaction (que na verdade abre uma outra sessão), mas, novamente, não recomendo.
Atenciosamente,
Felipe.