Disparam por evento; use parcimônia (impacto no caminho crítico).
2) DML: AFTER & INSTEAD OF
CREATE TRIGGER trg_ins_audit ON dbo.Pedidos
AFTER INSERT AS
INSERT dbo.Auditoria (Acao,Quando,Qtde) SELECT 'INS',SYSDATETIME(),COUNT(*) FROM inserted;
3) DDL Triggers & EVENTDATA()
CREATE TRIGGER trg_ddl ON DATABASE FOR CREATE_TABLE, ALTER_TABLE AS
INSERT dbo.AuditDDL(Evento,Xml) VALUES (EVENTDATA().value('(/EVENT_INSTANCE/EventType)[1]','sysname'), EVENTDATA());
4) LOGON Triggers
CREATE TRIGGER trg_logon_block ON ALL SERVER FOR LOGON AS
IF ORIGINAL_LOGIN() LIKE 'sa' AND HOST_NAME() NOT LIKE 'SRV-%' ROLLBACK;
5) Recursão & Desempenho
SET RECURSIVE_TRIGGERS OFF (padrão). Evite operações pesadas no trigger.
6) Boas Práticas
Audite em fila assíncrona (Service Broker) quando volume alto.
7) Laboratório
-- Criar tabela de auditoria e testar DML/DDL triggers.
8) Exercícios
Trigger INSTEAD OF para validar constraints complexas.