Trigger condicional

25/04/2017

0

Olá preciso realizar uma gravacao numa tabela B, quando um registro for inserido na Tabela A, porem só vai acontecer esta gravacao quando um campo numa TABELA C estiver com o Status 1

Exemplo:
Tenho uma tabela chamada ITENSPEDIDO, e tenho uma tabela chamada ENTREGAS, e tenho uma tabela PRODUTOS,

Entao, preciso gravar na tabela ENTREGAS, todos os produtos que tiverem o campo PRODUTOS.ENTREGA = 'S', todos os produtos que forem inseridos na tabela ITENSPEDIDO.

Abaixo a TRIGGER:


CREATE TRIGGER ATUALIZA_ENTREGAS
ON ITENSPEDIDO
AFTER INSERT
AS
BEGIN

DECLARE
@NUMPEDIDO INT,
@FILIAL INT,
@ITEM INT,
@PRODUTO VARCHAR (50),
@PEDIDOTOTAL FLOAT,
@QUANTIDADE FLOAT,
@DATA DATETIME,
@ENTIDADE INT,
@VENDEDOR INT


SELECT @NUMPEDIDO =NUMPEDIDO, @FILIAL = CODFILIAIS, @ITEM = NUMITEM, @PRODUTO = CODPRODUTO,
@QUANTIDADE = PEDIDOQUANTID, @VENDEDOR = CODVENDEDOR FROM INSERTED

INSERT INTO ENTREGAS VALUES (@ITEM, @NUMPEDIDO, @PRODUTO, 0, 0, 0, 0, @QUANTIDADE, 0, 0, NULL, NULL, 0)

END
GO

Da forma que esta acima, esta inserindo todos os produtos, mesmo os que nao sao para entrega.


Weldes
Weldes Goncalves

Weldes Goncalves

Responder

Post mais votado

25/04/2017

Weldes, boa tarde.

No seu caso, você tem que validar se o produto é o produto passiíel de entrega na tabela correspondente

no caso seria assim:

SELECT @NUMPEDIDO =NUMPEDIDO, @FILIAL = CODFILIAIS, @ITEM = NUMITEM, @PRODUTO = CODPRODUTO,
@QUANTIDADE = PEDIDOQUANTID, @VENDEDOR = CODVENDEDOR FROM INSERTED

IF((SELECT ENTREGA FROM PRODUTOS AS P WHERE P.CODPRODUTO = @PRODUTO) = 'S')
BEGIN
INSERT INTO ENTREGAS VALUES (@ITEM, @NUMPEDIDO, @PRODUTO, 0, 0, 0, 0, @QUANTIDADE, 0, 0, NULL, NULL, 0)
END

existem várias formas de você validar esse dados, essa é apenas uma. Vale salientar que você tem que ir na tabela de produtos, como você informou, para validar se o produto é passível de entrega.


espero ter ajudado.

Abraços meu nobre.

Lincon Silva

Lincon Silva
Responder

Mais Posts

26/04/2017

Weldes Goncalves

Excelente, era essa a minha duvida.
Obrigado, valeu!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar