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