Você está na página 1de 2

Pgina 1 de 2

08 Controle de Transaco (TTS)


Reviso: 13/07/2002

Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10 Verses Anteriores

O que

Tratando-se de Banco de Dados, toda e qualquer operao de incluso, alterao ou excluso de registro armazenada primeiramente na rea de LOG, garantindo assim que ao fazer a incluso de uma linha (registro) seja garantida a incluso completa de todas as colunas (campos). Caso no seja possvel a incluso da linha completa ele executa um procedimento chamado de ROLLBACK, ou seja, ignora todo o registro. Quando usar Quando temos uma operao em Banco de Dados que necessite que vrias incluses, alteraes ou excluses s sejam efetuadas quando todas as operaes tenham sido realizadas com sucesso, garantindo com isso que no seja atualizada parcialmente uma tabela ou que atualize uma tabela e no atualize outra tabela relacionada. Como usar

Para definir uma transao, deve-se utilizar os comandos BEGIN TRANSACTION e END TRANSACTION para definir inicio e fim de uma transao respectivamente. Todas informaes serem gravadas no Banco devem estar dentro de uma nica transao sejam elas provenientes de uma ou vrias tabelas. Deve-ser evitar utilizar laos (WHILE, FOR) dentro de uma transao, pois a rea de LOG do banco limitada, e se o volume de informaes ultrapassarem este limite, ocasionar o travamento do banco de dados. O tamanho da transao deve-ser ser conhecido pelo programdor. Em suma, para exemplificar, devemos controlar a transao de uma nota e no de um conjunto ilimitado de notas. Onde no usar O controle de transao jamais dever ser utilizado durante processo que envolvam interface (telas com entrada de dados). O controle deve-se resumir apenas ao processo de gravao. Entre um incio de transao (Begin Transaction) e um final (End Transaction) Todos os registros a serem gravados ficam locados at o final da transao. Caso tenhamos uma tela aps o BEGIN e antes do END dependeremos do usurio para efetuar a liberao da transao, fato este que causaria enormes problemas para o usurio. Outro lugar que no deve-se ter o controle de transao refere-se a rotinas de reprocessamentos ou reclculos, onde as informaes podem ser regerados durante este processo ou onde possamos ter um grande nmero de locks.

http://dem.microsiga.com.br/w_wEx011.apw?Cod=018281

24/8/2004

Pgina 2 de 2

BEGIN TRANSACTION ExpN1 :=FuncGrava() END TRANSACTION

Caso exista uma transao dentro de uma outra a segunda ser automaticamente ignorada, fechando-se a transao principal quando da chamada do comando END TRANSACTION. Grupos Relacionados Principal / Guias de Referncia / Como programar Advpl no ERP

Topo da Pgina

http://dem.microsiga.com.br/w_wEx011.apw?Cod=018281

24/8/2004