RES: [firebase-br] Trigger com Inclusão ou Atualização
Rafael Cabral
rafael.cabral em icraft.com.br
Qui Jul 7 15:50:27 -03 2005
Bom, percebi que as tabelas estão relacionadas.
Provavelmente o relacionamento esteja em cascata. Então quando vc altera uma
tupla no registro de SALDO_ESTOQUE, também atualiza o campo correspondente
na tabela de PRODUTOS.
Tire o UPDATE CASCADE desse relacionamento para ser se esse loop desaparece.
Então vc passa a fazer o cascade pelo trigger.
[]s,
Rafael Cabral
-----Mensagem original-----
De: Roberto - Sui Generis [mailto:roberto em suigenerisinf.com.br]
Enviada em: quinta-feira, 7 de julho de 2005 15:45
Para: rafael.cabral em icraft.com.br; FireBase
Assunto: Re: [firebase-br] Trigger com Inclusão ou Atualização
A tabela SALDO_ESTOQUE não tem trigger rodando, somente a de PRODUTOS
----- Original Message -----
From: "Rafael Cabral" <rafael.cabral em icraft.com.br>
To: "'FireBase'" <lista em firebase.com.br>
Sent: Thursday, July 07, 2005 3:28 PM
Subject: RES: [firebase-br] Trigger com Inclusão ou Atualização
A tabela saldo_estoque tem algum trigger rodando? Se sim, realiza alguma
operação de escrita na tabela de produtos?
[]s,
Rafael Cabral
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Roberto - Sui Generis Enviada em: quinta-feira, 7 de julho de 2005
15:04
Para: Firebase
Assunto: [firebase-br] Trigger com Inclusão ou Atualização
Estou querendo fazer uma Trigger para guardar o Saldo do Produto na Tabela
SALDO_ESTOQUE mas na Linha do "Insert Into" (última linha), está fazendo a
inclusão dos registros sem parar, ou melhor, está entrando em loop
(laço).... O que está faltando ???
CREATE TRIGGER PRODUTOS_AIU0 FOR PRODUTOS ACTIVE AFTER INSERT OR UPDATE
POSITION 0 AS declare variable DataSaldo date; declare variable Produto
Varchar(20); begin
for Select DATA, ITEM_ID from SALDO_ESTOQUE
where ((DATA = CURRENT_DATE) and (ITEM_ID = NEW.ITEM_ID))
into :DataSaldo, :Produto do
begin
if (Produto = NEW.ITEM_ID) then
begin
update saldo_estoque set SALDO = SALDO + (NEW.EST_ATUAL -
OLD.EST_ATUAL);
end
else
begin
insert into saldo_estoque (DATA,ITEM_ID,SALDO) values(CURRENT_DATE,
NEW.ITEM_ID, NEW.EST_ATUAL - OLD.EST_ATUAL);
end
end
end
[]'s
Roberto Krug
Sui Generis Informática
Novo Hamburgo - RS - Brasil
roberto em suigenerisinf.com.br
Interbase / Firebird DBA
Delphi 7 - IBX 7.08
______________________________________________
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 Anti-Virus.
Version: 7.0.323 / Virus Database: 267.8.10/43 - Release Date: 06/07/2005
--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.323 / Virus Database: 267.8.10/43 - Release Date: 06/07/2005
______________________________________________
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 Anti-Virus.
Version: 7.0.323 / Virus Database: 267.8.10/43 - Release Date: 06/07/2005
--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.323 / Virus Database: 267.8.10/43 - Release Date: 06/07/2005
Mais detalhes sobre a lista de discussão lista