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
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
Curtir tópico
+ 0
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.
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
Responder
Mais Posts
26/04/2017
Weldes Goncalves
Excelente, era essa a minha duvida.
Obrigado, valeu!
Obrigado, valeu!
Responder
Clique aqui para fazer login e interagir na Comunidade :)