Array
(
)

Trigger derruba transação do ADO

Marciley Ferreira
   - 07 mar 2010

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.