PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Trigger, será que é erro de iniciante? #44355

18/05/2004

0

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

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar