Fazendo uso da tabela temporária INSERTED dentro de uma trigger no SQL Server
O objetivo desse post é mostrar como utilizar o “INSERTED” do SQL Server em triggers do banco de dados.
Primeiramente, vamos criar a tabela para cuja qual iremos utilizar em nosso exemplo.
CREATE TABLE T_SQL ( CODIGO INT IDENTITY (1,1), DESCRICAO VARCHAR(50) );
Pronto à tabela de exemplo foi criada, agora vamos a criar a trigger.
CREATE TRIGGER T_SQL_FI ON T_SQL FOR INSERT AS SELECT 'TESTE INSERT CAPTURANDO INSERTD SQL SERVER T-SQL.COM.BR', INS.* FROM INSERTED INS GO
A trigger foi criada, agora todas a vez que for realizado um insert na tabela criada para exemplo haverá um retorno da coluna que foi definida com um texto fixo mais os campos da tabela em que o insert foi realizado.
Vamos fazer um insert na tabela “T_SQL”, para que seja possível visualizarmos o que foi dito acima na prática.
INSERT INTO T_SQL (DESCRICAO) VALUES ('T-SQL.COM.BR'), ('T-SQL');
O retorno que teremos será o seguinte:
Agora vocês me perguntam onde podemos fazer a utilização desse tipo de trigger?
Um exemplo simples é um log, por exemplo, toda vez que a tabela tiver um insert ela irá gravar em uma tabela de log qual horário que foi realizado o insert e o que foi inserido na tabela.
Vamos fazer um exemplo da trigger do inserted para fim de gravar log’s.
Iremos criar primeiramente nossa tabela de log’s.
CREATE TABLE T_SQL_LOG ( CD_LOG INT IDENTITY (1,1), DS_LOG VARCHAR(4000), TP_LOG VARCHAR(23), DT_LOG DATETIME );
Agora que a tabela foi criada, vamos fazer as alterações necessárias para que a tabela de log criada seja alimentada pela trigger criada anteriormente.
ALTER TRIGGER T_SQL_FI ON T_SQL FOR INSERT AS INSERT INTO T_SQL_LOG (DS_LOG, TP_LOG, DT_LOG) SELECT CAST(INS.CODIGO AS VARCHAR) + ' - ' + INS.DESCRICAO, 'INSERT', GETDATE() FROM INSERTED INS GO
Pronto agora vamos fazer o insert e ver o resultado da nossa trigger sendo utilizada como log.
INSERT INTO T_SQL (DESCRICAO) VALUES ('T-SQL.COM.BR'), ('T-SQL');
Após o insert, vamos fazer um select na tabela de log e ver o resultado.
SELECT * FROM T_SQL_LOG
Lógico que o que foi falado nesse post é algo bem simples mais para ilustrar de como pode-se fazer a utilização do INSERTED nas triggers.
Comentários: 1
Parabém, muito bom o conteúdo!