07/03/2010

Trigger derruba transação do ADO

Ola pessoal, estou precisando de uma ajuda. Em nosso sistema usamos Delphi 2009 e Sql Server, comunicando via ADO. Em diversas rotinas abrimos uma transação com o banco (Con.BeginTrans), executamos uma série de procedimentos (sempre via delphi) e no fim, se não deu nenhum pepino mandamos um Con.CommitTrans.

Bem esse senário já funciona a bastante tempo e temos muita coisa implementada usando essa linha de raciossínio. Só que surgiu uma necessidade de criar um campo novo na tabela de pagamentos e eu resolvi preenche-lo usando uma trigger direto no banco de dados. O código da trigger ficou do geito que precisavamos, funcionou bem ..... só que, sempre que a tabela de pagamentos sofre um insert ou update, que é quando a trigger deve entrar em ação, e esse insert ou update esta implementado dentro de um bloco iniciado com BeginTrans no delphi, acontece uma excessão (erro).

A trigger ao ser executada abre sua própria transação (acredito que seja assim que funcione) e "derruba" minha transação iniciada no Delphi. Ou seja, ou eu uso trigger no sql server ou BeginTrans no delphi. Existe essa limitação mesmo?

Tem como resolver isso?


Grato pela atenção.

Marciley Ferreira