Bom dia, Estou com uma duvida, o BEGIN TRANSACTION funciona perfeitamente bem, em caso de erro ele executa o ROLLBACK certinho, porem, como eu sei que foi executado esse rollback? estou fazendo um JOB e queria deixa-lo o mais claro possivel.
Bom dia, Estou com uma duvida, o BEGIN TRANSACTION funciona perfeitamente bem, em caso de erro ele executa o ROLLBACK certinho, porem, como eu sei que foi executado esse rollback? estou fazendo um JOB e queria deixa-lo o mais claro possivel.
Boa tarde Patrick,
O Begin Transaction
e o End Transaction
são comandos de pré-compilação, na verdade isso vira uma outra instrução.
Ao criar esses blocos, o controle de transação é ativo, em caso de erro, o bloco de exceção padrão do Protheus fará o rollback de forma automática, enquanto caso não ocorra erro, o End Transaction
será o responsável por efetuar o commit dos dados, não existe qualquer forma de "ver" isso, só existe forma de verificar se você está dentro de uma transação, com a função InTransact
.
Ou seja, a forma de saber que tudo ocorreu bem, é apenas a continuidade da thread, pois em caso de erro, será gerada uma exceção e a thread será encerrada.
https://tdn.totvs.com/pages/viewpage.action?pageId=271843449
Ou seja, se o comando seguinte ao End Transaction for executado quer dizer que tudo ocorreu corretamente?
— Patrick Zerbinatti 09 de Dec de 2019Muito obrigado novamente mais uma vez Daniel!
— Patrick Zerbinatti 09 de Dec de 2019Opa, exato, de nada! =)
— Daniel Mendes 09 de Dec de 2019
Boa tarde Patrick, não entendi bem, se gerou erro, a sua thread "morre" certo? Como você quer saber exatamente que aconteceu o rollback se do erro pra frente, não existiria mais nada?
— Daniel Mendes 09 de Dec de 2019Não não, eu gostaria de saber se após o END TRANSACTION não tem como eu saber como foi a transação, se ela terminou ou ocorreu algum problema.
— Patrick Zerbinatti 09 de Dec de 2019