Trigger condicional

SQL Server

Java

Banco de Dados

25/04/2017

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

Curtidas 0

Melhor post

Lincon Silva

Lincon Silva

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.
GOSTEI 2

Mais Respostas

Weldes Goncalves

Weldes Goncalves

25/04/2017

Excelente, era essa a minha duvida.
Obrigado, valeu!
GOSTEI 0
POSTAR