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