Divida ao implementar stored procedure em controle de estoque
Colegas,
criei a stored procedure abaixo, na opção inserting eu sei que esta certo, mas na opção updating
eu tenho minhas duvidas, esta correto se eu implementar assim no meu controle de estoque?
Obrigado pela ajuda!!
SET TERM ^ ;
CREATE TRIGGER TR_TESTE_ESTOQUE FOR NF_ENTRADA
ACTIVE AFTER INSERT OR UPDATE POSITION 0
AS
BEGIN
IF (INSERTING) THEN
BEGIN
UPDATE PRODUTO SET QTDE_ESTOQUE = (QTDE_ESTOQUE + NEW.QTDE_ENTRADA) WHERE ID_PRODUTO = NEW.ID_PRODUTO;
END
IF (updating) THEN
BEGIN
UPDATE PRODUTO
SET QTDE_ESTOQUE = (QTDE_ESTOQUE - NEW.QTDE_ENTRADA)
WHERE ID_PRODUTO = NEW.ID_PRODUTO;
END
END^
SET TERM ; ^
criei a stored procedure abaixo, na opção inserting eu sei que esta certo, mas na opção updating
eu tenho minhas duvidas, esta correto se eu implementar assim no meu controle de estoque?
Obrigado pela ajuda!!
SET TERM ^ ;
CREATE TRIGGER TR_TESTE_ESTOQUE FOR NF_ENTRADA
ACTIVE AFTER INSERT OR UPDATE POSITION 0
AS
BEGIN
IF (INSERTING) THEN
BEGIN
UPDATE PRODUTO SET QTDE_ESTOQUE = (QTDE_ESTOQUE + NEW.QTDE_ENTRADA) WHERE ID_PRODUTO = NEW.ID_PRODUTO;
END
IF (updating) THEN
BEGIN
UPDATE PRODUTO
SET QTDE_ESTOQUE = (QTDE_ESTOQUE - NEW.QTDE_ENTRADA)
WHERE ID_PRODUTO = NEW.ID_PRODUTO;
END
END^
SET TERM ; ^
Nilo Souza
Curtidas 0
Respostas
Emerson Nascimento
31/01/2011
atualização de nota de entrada? confesso que nunca vi....
de qualquer forma você precisa eliminar o valor anterior e somar o novo valor.
IF (updating) THEN
BEGIN
UPDATE PRODUTO
SET QTDE_ESTOQUE = (QTDE_ESTOQUE - OLD.QTDE_ENTRADA + NEW.QTDE_ENTRADA)
WHERE ID_PRODUTO = NEW.ID_PRODUTO;
END
de qualquer forma você precisa eliminar o valor anterior e somar o novo valor.
IF (updating) THEN
BEGIN
UPDATE PRODUTO
SET QTDE_ESTOQUE = (QTDE_ESTOQUE - OLD.QTDE_ENTRADA + NEW.QTDE_ENTRADA)
WHERE ID_PRODUTO = NEW.ID_PRODUTO;
END
GOSTEI 0
Nilo Souza
31/01/2011
Não é isso, dou entrada na nota fiscal (nota de entrada) e ela atualiza o meu estoque, se eu atualizar o valor ai acontece o que vc corrigiu. Bem sou iniciante, mas se tiver alguma instrução será muito bem aceita.
Um grande abraço
Um grande abraço
GOSTEI 0
Nilo Souza
31/01/2011
atualização de nota de entrada? confesso que nunca vi....
de qualquer forma você precisa eliminar o valor anterior e somar o novo valor.
IF (updating) THEN
BEGIN
UPDATE PRODUTO
SET QTDE_ESTOQUE = (QTDE_ESTOQUE - OLD.QTDE_ENTRADA + NEW.QTDE_ENTRADA)
WHERE ID_PRODUTO = NEW.ID_PRODUTO;
END
de qualquer forma você precisa eliminar o valor anterior e somar o novo valor.
IF (updating) THEN
BEGIN
UPDATE PRODUTO
SET QTDE_ESTOQUE = (QTDE_ESTOQUE - OLD.QTDE_ENTRADA + NEW.QTDE_ENTRADA)
WHERE ID_PRODUTO = NEW.ID_PRODUTO;
END
É new.ID_PRODUTO mesmo? Pq o produto ja esta na tabela, apenas irei alterar o campo quantidade. Fiquei em duvida.
GOSTEI 0