Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Cross Segmento - TOTVS Backoffice Linha Protheus - ADVPL - Begin transaction

O artigo esclarece que, embora tecnicamente possível, não é recomendado utilizar controle de transação (Begin Transaction/End Transaction) em rotinas automáticas no TOTVS Protheus, pois pode causar conflitos, travamentos, deadlocks e comprometer a integridade dos dados, já que o sistema possui seus próprios controles internos. O uso dessas funções é estritamente proibido no Protheus.

time.png Tempo aproximado para leitura: 00:02: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

Visão Geral

Uma dúvida comum em customizações que utilizam ExecAuto (Rotinas Automáticas) é a viabilidade de encapsular a chamada em um bloco de controle de transação (Begin Transaction / End Transaction).

Embora o AdvPL permita essa estrutura, o uso não é recomendado na maioria dos cenários de customização, visando preservar a integridade dos dados e a performance do ambiente.

 

Riscos e Impactos do Uso Indevido

O uso excessivo ou incorreto de transações em customizações pode gerar os seguintes problemas:

  • Locks e Concorrência: Uma transação aberta por muito tempo (ou que abrange muitos processos) mantém registros travados no banco de dados, causando lentidão para outros usuários e potenciais erros de Deadlock.

  • Conflito com o Padrão: As rotinas automáticas da TOTVS já possuem, internamente, seus próprios controles de gravação. Abrir uma transação externa pode "concorrer" com as tratativas padrão, impedindo que o sistema gerencie corretamente o Rollback em caso de falha.

     

Pontos de atenção

  • BeginTran() e EndTran(): Estas funções tem uso estritamente proibido no Protheus. 

  • Finalização de Thread: No Protheus, uma transação deve ser aberta e fechada dentro do ciclo de vida da mesma thread. Finalizar uma thread sem encerrar a transação pode corromper dados.

  • Comandos de Gravação Forçada: Evite o uso de DBCommit() ou FKCommit() dentro de blocos de transação customizados, pois eles forçam a gravação física no banco, ignorando a lógica de "tudo ou nada" da transaçã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.

 

Saiba mais
Controle de transações

Esse artigo foi útil?
Usuários que acharam isso útil: 1 de 2

1 Comentários

  • Avatar
    Givanildo Andrade Lopes

    Sr. cliente,

    Esse canal está aberto e é exclusivo para sugestões de melhoria nos artigos. Se mesmo após seguir os passos do artigo tenha encontrado uma inconsistência, favor entrar em contato com o suporte TOTVS por meio de um de nossos canais de atendimento.

    Neste caso em conjunto com você, Cliente TOTVS, foi reavaliado o artigo e atualizado em busca de qualidade para agilizar o atendimento e fomentar o autoatendimento..

    -5
    Ações de comentário Permalink
Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _