Re: [firebase-br] Trigger - bloco For Select não está sendo executado

Valdir Marcos valdir.marcos em ig.com.br
Qui Nov 9 22:51:26 -03 2006


Você colocou o gatilho na tabela Pedidos, mas procura registros na tabela 
PedidosItens.
Lembre-se que primeiro você insere um registro na tabela Pedidos (onde está 
o seu gatilho), para depois inserir os registros na tabela PedidosItens, ou 
seja, o seu gatilho é executado antes de existirem registros na tabela 
PedidosItens...
Para atualizar o estoque, o melhor é você criar os gatilhos (after insert, 
before delete e after update) na tabela de PedidosItens.

Um abraço,

Valdir


----- Original Message ----- 
From: "Andrei Luís" <compuvale.software em gmail.com>
To: "Firebase" <lista em firebase.com.br>
Sent: Thursday, November 09, 2006 6:52 PM
Subject: [firebase-br] Trigger - bloco For Select não está sendo executado


Olá para todos.

Seguinte, considerem a seguinte trigger:

CREATE TRIGGER PEDIDOS_AI0 FOR PEDIDOS
ACTIVE AFTER INSERT POSITION 0
AS
DECLARE VARIABLE WPEDIDO_ID INTEGER;
DECLARE VARIABLE WPRODUTO_ID INTEGER;
DECLARE VARIABLE WQTDE NUMERIC(9,2);
DECLARE VARIABLE WVALOR NUMERIC(9,2);
DECLARE VARIABLE WCLIENTE_ID INTEGER;
begin
   if (new.TIPO='VALE') then
      begin
         wpedido_id = new.registro_id;
         insert into teste Values(:wpedido_id,  0);

         For Select produto_id, qtde, valor, cliente_id
               from pedidosItens
               where pedido_id = :wpedido_id
               into :wproduto_id, :wqtde, :wvalor, :wcliente_id
            do
            begin
               insert into teste Values(new.registro_id, 1);
               update produtos set estoque = estoque - :wqtde
                  where registro_id=:wproduto_id;

            end

      end
end

Estou utilizando o IBExpert + FB 1.5.2.

Tabela Pedidos:
PK  Registro_id

Tabela PedidosItens
PK Registro_id
FK Pedido_id

A idéia é após o insert na tabela Pedidos, que o estoque dos produtos
seja atualizado, caso o campo TIPO seja = 'VALE'.
Coloquei as linhas Insert Into Teste... para rastrear o que está
acontecendo. O problema é que o que está dentro do For Select, não
está sendo executado. Testei o Select no SQL Editor e ele retorna as
linhas corretamente. O primeiro Insert Into teste, está gravando
corretamente o PK da tabela pedido (Registro_id).


Não sei o que está me escapando... Alguém faz idéia do que acontece?

-- 
[]s
Andrei

Win XP Pro + D2006 Pro + FB 1.5.2 + IBO 4.6B






Mais detalhes sobre a lista de discussão lista