Tempo aproximado para leitura: 00:03:00 min
Dúvida
Rotina automática com controle de transação, pode utilizar?
Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) – ADVPL– A partir da versão 11.80
Solução
O uso do Begin Transaction EndTransaction não é recomendado em customizações que executam rotinas automáticas, pois por via de regra uma transação somente deve ser aberta no momento da gravação do dado, para evitar concorrência de lock entre registros e lentidão;
Salvo os casos em que houver exemplo de rotina automática com controle de transação mapeado (documentado), pois do contrário, irá concorrer com as tratativas da rotina padrão.
Begin Transaction encadeado, sempre vai garantir toda a transação, porém existem particularidades do Oracle, por exemplo, que sempre realiza o Commit dos dados caso um comando de DDL seja executado dentro da transação (por exemplo, a criação e uma tabela temporária). Este é um comportamento do banco de dados, e não existe atuação no sistema.
Uma das rotinas chamadas também pode estar terminando a transação sem devolver o erro para o sistema. No Protheus, a finalização de uma transação deve, ao final, finalizar a thread.
As rotinas também podem executar ações como FKCommit ou DBCommit.
As funções BeginTran() e EndTran() tem seu uso proibido no Protheus, e não devem ser utilizadas em nenhuma hipótese.
Saiba mais
Controle de transações
1 Comentários