Trigger, será que é erro de iniciante?

Firebird

18/05/2004

Oi pessoal, seguindo algumas pesquisas feitas neste forum, criei as seguintes Tabelas:

CREATE TABLE ´PRODUTO´
(
´CODPRODUTO´´DM_INTEGER_PK´,
´CODMARCA´´DM_INTEGER´,
´DESCRICAO´´DM_VARCHAR_60´,
´MODELO´´DM_VARCHAR_10´,
´SALDO´´DM_SMALLINT´,
´PRECOCUSTO´´DM_DINHEIRO´,
´PRECOVENDA´´DM_DINHEIRO´,
´PONTOS´´DM_SMALLINT´,
CONSTRAINT ´PK_PRODUTO´ PRIMARY KEY (´CODPRODUTO´)

CREATE TABLE ´ITENSENTRADA´
(
´CODENTRADA´´DM_INTEGER_PK´,
´NUMERO´´DM_INTEGER´,
´CODFORNECEDOR´´DM_INTEGER´,
´CODPRODUTO´´DM_INTEGER´,
´CODMARCA´´DM_INTEGER´,
´QUANTIDADE´´DM_SMALLINT´,
´VALOR´´DM_DINHEIRO´,
CONSTRAINT ´PK_ITENSENTRADA´ PRIMARY KEY (´CODENTRADA´)

Depois criei a seguinte TRIGGER:

CREATE TRIGGER ´ITENSENTRADA_ATUALIZA_ESTOQUE´ FOR ´ITENSENTRADA´
ACTIVE AFTER INSERT POSITION 0
AS
DECLARE VARIABLE CodProduto Integer;
DECLARE VARIABLE Saldo smallint;
DECLARE VARIABLE Quantidade smallint;
begin
SELECT CodProduto, SALDO FROM PRODUTO WHERE CODPRODUTO =:CODPRODUTO INTO :Codproduto, :Saldo;
If (:saldo is null) then Saldo=0;
SELECT Codproduto, QUANTIDADE FROM ITENSENTRADA WHERE CODPRODUTO =:CODPRODUTO INTO :CodProduto, :Quantidade;
SALDO = Saldo + New.Quantidade;
update produto
set SALDO = :Saldo
where codproduto = :codproduto;
end
^

o intuito é que quando gravar a QUANTIDADE da tabela ITENSENTRADA, também atualiza-se o SALDO na tabela PRODUTO.
Após tudo isto o SALDO não deveria atualizar?
Se não, por favor me digam porque e como contornar essa situação, pois já tentei de tudo e não estou conseguindo.
Será que tenho que referenciar essa TRIGGER em algum lugar para dar certo?
Grata, Kika


Kika

Kika

Curtidas 0
POSTAR