Fórum Será que esta Trigger está errada? #44302
14/05/2004
0
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
Curtir tópico
+ 0Posts
14/05/2004
Anorex
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
14/05/2004
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
14/05/2004
Anorex
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
14/05/2004
Everton
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
Clique aqui para fazer login e interagir na Comunidade :)