[firebase-br] Ajuda com Trigger.

Emerion ronaldo em emerion.com.br
Qua Nov 9 10:13:19 -03 2005


Rodrigo

blz.

porque que você já esta em uma trigger apontada para o banco e esta 
executando updates dentro da mesma tabela fazendo com que o banco execute a 
mesma trigger de forma infinita por que que você não trabalha da forma 
abaixo

  IF(INSERTING) THEN
  BEGIN
    NEW.VAL_SLD_TITULO = NEW.VAL_TITULO;
  END
  IF(UPDATING) THEN
  BEGIN
   NEW.VAL_SLD_TITULO = VAL_SLD_TITULO + (OLD.VAL_TITULO - 
NEW.VAL_PGT_TITULO);
   NEW.VAL_PGT_TITULO = VA_PGT_TITULO + NEW.VAL_PGT_TITULO;
  END

 ok ?


----- Original Message ----- 
From: "Rodrigo de Moura" <rodrigo em datawin.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Wednesday, November 09, 2005 10:00 AM
Subject: [firebase-br] Ajuda com Trigger.


Bom dia Pessoal,

 Tenho a seguinte situação: uma tabela com os campos val_titulo, 
val_pgto_titulo, val_saldo_titulo
e o seguinte procedimento:
                                       val_titulo - val_pgto_titulo - 
val_saldo_titulo
lançamento do titulo(500) - 500        - 0                   - 500
baixa 1 (200)                   - 500        - 200               - 300
baixa 2 (100)                   - 500        - 300               - 200
baixa 3 (200)                   - 500        - 500               - 0

Criei a seguinte trigger que segue abaixo:

SET TERM !! ;
CREATE TRIGGER "SALDO_TITULO" FOR "TAB_TITULO"
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
BEGIN
  IF(INSERTING) THEN
  BEGIN
    UPDATE TAB_TITULO
       SET VAL_SLD_TITULO = NEW.VAL_TITULO
     WHERE COD_TITULO = NEW.COD_TITULO;
  END
  IF(UPDATING) THEN
  BEGIN
    UPDATE TAB_TITULO
       SET VAL_SLD_TITULO = VAL_SLD_TITULO + (OLD.VAL_TITULO - 
NEW.VAL_PGT_TITULO)
     WHERE COD_TITULO = NEW.COD_TITULO;

    UPDATE TAB_TITULO
       SET VAL_PGT_TITULO = VA_PGT_TITULO + NEW.VAL_PGT_TITULO
     WHERE COD_TITULO = NEW.COD_TITULO;
  END
END !!
SET TERM ; !!

Quando faço um insert beleza tudo tranquilo, mas quando faço uma atualização 
(uma baixa)
dá o seguinte erro: "Too many concurrent executions of the same request".
Onde estou errando? Utilizo Firebird 1.5.2.
Qualquer ajuda será bem vinda!!

Atenciosamente,

Rodrigo de Moura
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa


-- 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.362 / Virus Database: 267.12.8/162 - Release Date: 05/11/2005




-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.362 / Virus Database: 267.12.8/162 - Release Date: 05/11/2005





Mais detalhes sobre a lista de discussão lista