Entrar

OracleBR

Dicas e Exemplos

Inicial - Banco de Códigos

SQLPlus e AutoCommit - Chiappa

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