1
resposta

TRIGGER

o curso é de mysql, porem estou praticando no sql server consegui construir a TRIGGER no sql server

CREATE TRIGGER TG_CALCULA_FATURAMENTO_INSERT ON VENDAS_SUCOS.DBO.ITENS_NOTAS for INSERT, DELETE AS BEGIN

DELETE TAB_FATURAMENTO
 INSERT INTO TAB_FATURAMENTO
SELECT A.[DATA_VENDA], SUM(B.QUANTIDADE * B.PRECO)AS TOTAL_VENDA
FROM VENDAS_SUCOS.DBO.NOTAS A 
INNER JOIN VENDAS_SUCOS.DBO.ITENS_NOTAS B
ON A.NUMERO = B.NUMERO
GROUP BY A.[DATA_VENDA]

END GO

SELECT * FROM TAB_FATURAMENTO

porem ao executar uma segunda vez aparece a mensagem de erro; Msg 2714, Nível 16, Estado 2, Procedimento TG_CALCULA_FATURAMENTO_INSERT, Linha 1 [Linha de Início do Lote 57] Já existe um objeto com nome 'TG_CALCULA_FATURAMENTO_INSERT' no banco de dados. quando verifico na tabela ITENS_NOTAS, a TRIGGER(meu está gatilho) está lá. está certo, ou tem algum comando para excluir ela antes para executar novamente.?

1 resposta

Olá CELIO, tudo bem? Bom, uma TRIGGER deve ser criada apenas uma vez, e pelo erro parece que você tentou criá-la mais de uma vez, depois de você criar a TRIGGER , ela sozinha vai interceptar os eventos declarados no cabeçalho da TRIGGER for INSERT, DELETE, nesse caso ela vai saber que deve ser executada sempre que for feito um INSERT ou um DELETE na tabela de ITENS_NOTAS. Por tanto ela deve ser criada apenas uma vez e para ver o funcionamento da mesma é só adicionar uma nova venda, no caso adicionar um novo registro na tabela de ITENS_NOTAS.

Espero ter esclarecido sua dúvida!