[firebase-br] Trigger não chama Procedure...

Valdir Marcos valdir.marcos em ig.com.br
Sáb Ago 2 18:01:02 -03 2008


Provavelmente, está acontecendo alguma exceção...

Depure sua aplicação fazendo testes com Insert, Update e Delete
isoladamente para ver o comportamento da trigger.

Sua trigger com certeza não funcionará corretamente no 2.1, então
sugiro reconstruí-la identificando se o evento é  Insert, Update e
Delete e usando New ou Old conforme o caso.

Outra boa atitude seria mudar o número do Position para 10 e fazê-lo
crescer de 10 e 10, sobrando assim números para futuras emergências.

Um abraço,

Valdir


2008/8/1, VBSHAR <sharmaq em terra.com.br>:
> Bom dia
>
>
>  pessoal, eu tenho uma base FB 1.5 e nela uma procedure que serva para
>  atualizar o valor pago de uma conta, esta procedure é chamada por uma
>  trigger numa tabela de cheques recebidos. Seguem as mesmas:
>
>  A procedure:
>  ===================================================
>  CREATE PROCEDURE ATUALIZA_SALDO_PAGAR (
>     COD_LANCTOS INTEGER)
>  AS
>  DECLARE VARIABLE TOTAL_GERAL NUMERIC(12,2);
>  DECLARE VARIABLE TOTAL_CHEQUE NUMERIC(12,2);
>  DECLARE VARIABLE TOTAL_CARTAO NUMERIC(12,2);
>  DECLARE VARIABLE TOTAL_BOLETOS NUMERIC(12,2);
>  begin
>   /*TOTALIZA O JA PAGO EM CHEQUES*/
>      SELECT COALESCE(SUM(VALOR),0)
>        FROM contas_cheques
>        WHERE COD_LANCTO=:COD_LANCTOS and contas_cheques.COMPENSADO='S'
>        INTO :TOTAL_CHEQUE;
>   /*TOTALIZA O JA PAGO EM CARTOES*/
>      SELECT COALESCE(SUM(VALOR),0)
>        FROM contas_cartoes
>        WHERE COD_LANCTO=:COD_LANCTOS and contas_cartoes.pago=-1
>        INTO :TOTAL_CARTAO;
>   /*TOTALIZA O JA PAGO EM BOLETOS*/
>      SELECT COALESCE(SUM(VALOR),0)
>        FROM contas_boletos
>        WHERE COD_LANCTO=:COD_LANCTOS and contas_boletos.pago=-1
>        INTO :TOTAL_BOLETOS;
>   /*UNE TODAS AS VARIAVEIS NUM SO*/
>   TOTAL_GERAL=TOTAL_CHEQUE + TOTAL_CARTAO;
>
>   UPDATE contas_lancamentos
>   SET CONTAS_LANCAMENTOS.valor_pago=:TOTAL_GERAL
>   WHERE CONTAS_LANCAMENTOS.CODIGO=:COD_LANCTOS;
>
>  /*SE O VALOR PAGO FOR IGUAL OU MAIOR QUE O VALOR DEVIDO POE A CONTA COMO
>  PAGA*/
>
>   UPDATE contas_lancamentos
>   SET CONTAS_LANCAMENTOS.pago=-1
>   WHERE CONTAS_LANCAMENTOS.CODIGO=:COD_LANCTOS AND
>  CONTAS_LANCAMENTOS.VALOR_PAGAR<=contas_lancamentos.valor_pago;
>   suspend;
>  End
>  ===================================================
>  A triger é:
>  ===================================================
>  CREATE TRIGGER CONTAS_CHEQUES_AIUD0 FOR CONTAS_CHEQUES
>  ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
>  AS
>  begin
>     execute procedure ATUALIZA_SALDO_PAGAR NEW.CODIGO;
>  end
>  ===================================================
>
>  Bom, a procedure funciona se eu chamar ela manualmente pelo IBExpert, mas
>  quando eu altero a tabela cheques a trigger parece não disparar a procedure.
>  Não dá mensagem de erro nenhum, só não funciona....
>
>  O que pode ser?
>
>
>
>
>
> ______________________________________________
>  FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>  Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
>  Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>




Mais detalhes sobre a lista de discussão lista