Data de Inclusão:
16/03/2007 | Última Alteração:
16/03/2007
Tipo:Dicas e Exemplos | Enviada por:
Moderador Oracle_br (moderador@oraclebr.com.br)
Mensagem circulada no grupo em 13/03/2007
--------------------------------------------------
Não, Renato, vc está absolutamente enganado, o comportamento de
comitar quando sai normalmente do sqlplus com uma transação pendente
** não é ** controlado pelo AUTOCOMMIT, o que o AUTOCOMMIT faz é
mandar um commit automático após cada comando, é OUTRA coisa. O
manual do sqlplus já nos diz :
"SET AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}
Controls when Oracle commits pending changes to the database. ON
commits pending changes to the database after Oracle executes each
successful INSERT, UPDATE, or DELETE command or PL/SQL block. OFF
suppresses automatic committing so that you must commit changes
manually (for example, with the SQL command COMMIT). "
exemplo :
D:\>sqlplus scott/tiger@bddev
Conectado a:
Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
With the Partitioning option
JServer Release 9.2.0.5.0 - Production
scott@bddev:SQL>set autocommit OFF
scott@bddev:SQL>insert into dept values(33, 'dep33', null);
1 linha criada.
==>> vou sair graciosamente, ie, NÂO VOU abortar o programa, nem usar
o botão de "x" pra fechar a janela ...
scott@bddev:SQL>exit
Desconectado de Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit
Production
With the Partitioning option
JServer Release 9.2.0.5.0 - Production
==> agora entro de novo ...
D:\>sqlplus scott/tiger@bddev
Conectado a:
Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
With the Partitioning option
JServer Release 9.2.0.5.0 - Production
scott@bddev:SQL>select * from dept;
DEPTNO DNAME LOC
------------------ -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
41 Depto ~
33 dep33
6 linhas selecionadas.
scott@bddev:SQL>
===> ** OLHA LÁ A ALTERAÇÂO COMITADA, MESMO COM O AUTOCOMMIT
OFF !!!!! ** NADA A VER, portanto, a sua suposição, o comportamento
de comitar quando vc sai graciosamente da sessão plus é ** programado
nele **, é interno, ok ?? Exemplo da atuação do AUTOCOMMIT ON :
scott@bddev:SQL>set autocommit on
scott@bddev:SQL>insert into dept values (34, 'dep 34', null);
1 linha criada.
Commit concluÝdo.
==> viu acima ??? Automaticamente ele mandou um COMMIT após o meu
DML, vamos ver que é verdade :
scott@bddev:SQL>rollback;
Rollback completo.
scott@bddev:SQL>select * from dept;
DEPTNO DNAME LOC
------------------ -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
34 dep 34
41 Depto ~
33 dep33
7 linhas selecionadas.
Assim Alessandro, vc NÂO TEM problema algum, é o jeito que a
ferramenta funciona, é característica NATIVA, certo ?? Só
complementando, Alessandro, no Forms o comportamento nativo quando vc
sai graciosamente com transação pendente é exibir uma janela "Do you
want to save ? [yes] [no]' , SE a sua aplicação não está fazendo isso
com absoluta certeza tem SIM alguma customização nela...
[]s
Chiappa