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
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)