Rollback Firedac no DataSnap fecha a transacao

23/02/2021

3

Ola , estou precisando de uma ajuda com o firedac em um servidor datasnap

> Recebo um JSON e monto um comando sql para inserção de uma venda em uma tabela ,
recebendo de retorno o codigo autoincrementado da mesma, exemplo do comando sql

variavelComando := ''insert into tabela1(A, B, ) VALUES( +
quotedStr(status) + '', '' +
quotedStr(dataHoraChegada) + '');'' +
'' SELECT LAST_INSERT_ID()'';

repare o '' SELECT LAST_INSERT_ID()'' que é para obter o retorno do auto incremento .

Pois bem , definido meu primeiro comando de inserção, eu tenho um componente de conexao do firedac - TFDConnection, o qual vou usar para executar o comando anterior, porem apos executar o comando(com sucesso) a transacao é encerrada , como se eu ja tivesse comitado , porem eu estou desligando o autocomit. Exemplo:

db.TxOptions.AutoCommit := false;
db.TxOptions.EnableNested := true;
db.TxOptions.AutoStart := False;
db.TxOptions.AutoStop := False;

try
db.StartTransaction;
if db.InTransaction then

cod := dbAddPedido.ExecSQLScalar(
variavelComando
);

//apos dar o insert , neste ponto , tento executar um rollback como teste , porem obtenho um erro falando que a transacao esta fechada, porem
//eu nao commitei nada nao parei a transacao , o componente fechou a transacao sozinho.
dbAddPedido.Rollback;

except

end;
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar