Será que esta Trigger está errada?
Oi pessoal, tenho a seguinte TRIGGER abaixo descrita, como faço para que quando eu salvar a tabela de ItensEntrada, também atualize o SALDO na tabela produto?
Será que a trigger está errada, se sim favor me ajudar, pois preciso muiiiito.
CREATE TRIGGER ´ITENSENTRADA_ATUALIZA_ESTOQUE´ FOR ´ITENSENTRADA´
ACTIVE AFTER INSERT POSITION 0
AS
DECLARE VARIABLE CodProduto Integer;
DECLARE VARIABLE Saldo Integer;
DECLARE VARIABLE Quantidade Integer;
begin
SELECT SALDO FROM PRODUTO WHERE CODPRODUTO =:CODPRODUTO INTO :SALDO;
SELECT QUANTIDADE FROM ITENSENTRADA WHERE CODPRODUTO =:CODPRODUTO INTO :QUANTIDADE;
SALDO = SALDO + QUANTIDADE;
update produto
set SALDO = :Saldo
where codproduto = :codproduto;
end
Grata, Kika
:P
Será que a trigger está errada, se sim favor me ajudar, pois preciso muiiiito.
CREATE TRIGGER ´ITENSENTRADA_ATUALIZA_ESTOQUE´ FOR ´ITENSENTRADA´
ACTIVE AFTER INSERT POSITION 0
AS
DECLARE VARIABLE CodProduto Integer;
DECLARE VARIABLE Saldo Integer;
DECLARE VARIABLE Quantidade Integer;
begin
SELECT SALDO FROM PRODUTO WHERE CODPRODUTO =:CODPRODUTO INTO :SALDO;
SELECT QUANTIDADE FROM ITENSENTRADA WHERE CODPRODUTO =:CODPRODUTO INTO :QUANTIDADE;
SALDO = SALDO + QUANTIDADE;
update produto
set SALDO = :Saldo
where codproduto = :codproduto;
end
Grata, Kika
:P
Kika
Curtidas 0
Respostas
Anorex
14/05/2004
como vc sabe se vc selecionou o registro correto?
eu tive que fazer assim:
SELECT MAX(ID_ITENS_NOTA_ENTRADA) FROM ITENS_NOTA_ENTRADA INTO :ID_ITENS_NOTA_ENTRADA;
SELECT QUANTIDADE, ID_PRODUTO FROM ITENS_NOTA_ENTRADA WHERE ID_ITENS_NOTA_ENTRADA = :ID_ITENS_NOTA_ENTRADA
INTO :ITEM_QUANTIDADE, :ITEM_ID_PRODUTO;
SELECT QUANTIDADE FROM PRODUTOS WHERE ID_PRODUTO = :ITEM_ID_PRODUTO INTO :QUANTIDADE_PROD;
UPDATE PRODUTOS SET QUANTIDADE = :QUANTIDADE_PROD + :ITEM_QUANTIDADE WHERE ID_PRODUTO = :ITEM_ID_PRODUTO;
eu tive que fazer assim:
SELECT MAX(ID_ITENS_NOTA_ENTRADA) FROM ITENS_NOTA_ENTRADA INTO :ID_ITENS_NOTA_ENTRADA;
SELECT QUANTIDADE, ID_PRODUTO FROM ITENS_NOTA_ENTRADA WHERE ID_ITENS_NOTA_ENTRADA = :ID_ITENS_NOTA_ENTRADA
INTO :ITEM_QUANTIDADE, :ITEM_ID_PRODUTO;
SELECT QUANTIDADE FROM PRODUTOS WHERE ID_PRODUTO = :ITEM_ID_PRODUTO INTO :QUANTIDADE_PROD;
UPDATE PRODUTOS SET QUANTIDADE = :QUANTIDADE_PROD + :ITEM_QUANTIDADE WHERE ID_PRODUTO = :ITEM_ID_PRODUTO;
GOSTEI 0
Kika
14/05/2004
Anorex, eu já estou pedindo para atualizar na TRIGGER “ITENSENTRADA_ATUALIZA_ESTOQUE´ FOR ´ITENSENTRADA´
ACTIVE AFTER INSERT POSITION 0, a trigger não deveria atualizar?
Porque não faz isto?
Deveria declarar essa Trigger em algum lugar?
Grata, Kika
ACTIVE AFTER INSERT POSITION 0, a trigger não deveria atualizar?
Porque não faz isto?
Deveria declarar essa Trigger em algum lugar?
Grata, Kika
GOSTEI 0
Anorex
14/05/2004
Kika, eu também penso igual a você...
eu fazia igual a você está fazendo e não dava certo... quando fiz deste jeito que postei deu certo....
com o SQL Server tem uma variável que armazena estes valores que estão sendo inseridos/alterados mas no ib/fb não descobri se existe essas variáveis
eu fazia igual a você está fazendo e não dava certo... quando fiz deste jeito que postei deu certo....
com o SQL Server tem uma variável que armazena estes valores que estão sendo inseridos/alterados mas no ib/fb não descobri se existe essas variáveis
GOSTEI 0
Everton
14/05/2004
Kika,
não sei o SGDB que você usa. Talvez este código te ajude.
não sei o SGDB que você usa. Talvez este código te ajude.
CREATE TRIGGER "ITENSENTRADA_ATUALIZA_ESTOQUE" FOR "ITENSENTRADA" ACTIVE AFTER INSERT POSITION 0 AS DECLARE VARIABLE Saldo Integer; begin SELECT SALDO FROM PRODUTO WHERE CODPRODUTO = NEW.COD_PRODUTO INTO :SALDO; update produto set SALDO = :Saldo + New.Quantidade where codproduto = NEW.codproduto; end
GOSTEI 0