Varias transacoes

24/01/2013

1

Preciso de ajuda com tratamento de transacoes
O senario é o seguinte:
try
begin;//inicio uma transacao
{aqui exporto os cupom pra um determinado micro(servidor)}
.
.
.
try
begin//inicio uma outra transacao
{aqui eu finalizo a exportacao do cupom (gero finaceiro - baixa o estoque etc)}
.
.
.
{porem aqui se nao tiver estoque o suficiente eu devo dar um rollback nesta transacao apenas a outra transacao deve
comitar normalmente se nao der nenhum erro}
commit{se der tudo certo comito a transacao}
except
rollback;
end;
commit;{se der tudo certo commito a transacao}
except
rollback;
end;



resumindo uma transacao dentro da outra e se a segunda nao atender uma condicao deve-se dar um rolback apenas na segunda
a primeira deve commitar normalmente (pra resolver o conflito da segunta tenho uma tela onde mostro os cupons que foram exportados porem nao foram finalizados)
-Em tese uma transacao é responsavel por exportar os cupons e outra é responsavel por finalizar estes cupons
porem isto nao esta funcionando parece ue ele nao instancia uma segunda transacao se quando nao atende a segunda condicao e dou o rolback esta dando rolback tamvbem na primeira

uso delphi xe3 com zeos 7.0 e banco postgres 9.2
Responder

Posts

24/01/2013

Bruno Leandro

Olá ao inves de usar a segunda transação voce pode usar uma query com cachedupdates como true, ai quando voce usar o query.post ele nao comita, ele só comita quando voce rodar o query.ApplyUpdates, e dar dar "rollback" voce usa o query.CancelUpdates
Responder