Eu criei a seguinte situação problema, para todos produtos inseridos na tabela de produtos, eu quero que uma trigger faça a inserção do codigo e data em outra tabela. Acontece que, ao fazer isso ele insere todos os produtos sem exceção, eu quero fazer a inserção da quantidade exata de dados que foram inseridos..
Para isso, eu pensei em fazer uma busca dentro da tabela produtos e se não for encontrado nenhum produto com o código, ele faz a inserção. Entendo que pode ser muito custoso, pq ele vai consultar todos os dados toda vez que for inserido um registro.. O problema, é que não estou conseguindo desenrolar essa query
--tabela que receberá os últimos produtos inseridos (inserted)
CREATE TABLE LOG_PROD (
COD_PROD VARCHAR(10) PRIMARY KEY,
D_INSERIDO DATE
);
--TRIGGER que identifica a inserção dos ultimos produtos e insere na tabela log_prod
CREATE TRIGGER TG_LOG_PROD
ON [dbo].[TABELA DE PRODUTOS]
AFTER INSERT
AS
BEGIN
INSERT INTO LOG_PROD (COD_PROD, D_INSERIDO)
SELECT [CODIGO DO PRODUTO], GETDATE() FROM [dbo].[TABELA DE PRODUTOS]
END;
SELECT * FROM LOG_PROD
INSERT INTO [TABELA DE PRODUTOS]([CODIGO DO PRODUTO],[NOME DO PRODUTO] ,[EMBALAGEM],[TAMANHO],[SABOR],[PREÇO DE LISTA])
VALUES ('202015984','TEST','GRANDE','TST','MEDIO',2)
Abaixo, estou tentando fazer a big query, que vai consultar se há ou não o produto já inserido, para depois fazer a alteração dentro da trigger, mas, da erro;
--
SELECT [CODIGO DO PRODUTO] FROM [TABELA DE PRODUTOS] AS TB2 WHERE TB2.[CODIGO DO PRODUTO] <> TB1.[COD_PROD]
SELECT [COD_PROD] FROM LOG_PROD AS TB1
mensagem do erro; "Mensagem 4104, Nível 16, Estado 1, Linha 23 O identificador de várias partes "TB1.COD_PROD" não pôde ser associado."