[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