Gatilho (trigger) de banco de dados
Procedimento do banco que roda automaticamente em INSERT/UPDATE/DELETE. Níveis BEFORE/AFTER e ROW/STATEMENT. Usos: logs de auditoria (quem mudou o quê), desnormalização, colunas derivadas, regras de negócio.
PostgreSQL: o trigger chama uma função (PL/pgSQL, PL/Python etc.). MySQL: corpo do trigger escrito inline. Contrapartidas: triggers escondem lógica — "por que essa coluna muda?" → não está no código da aplicação, é preciso garimpar o schema do banco. Desempenho: triggers pesados deixam UPDATEs simples lentos. Alternativa moderna: CDC + handler no lado da aplicação, para desacoplar. Antipadrão clássico: um trigger que chama outro UPDATE que dispara outro trigger → explosão recursiva. Boa prática atual: evitar triggers para lógica de negócio; para trilhas de auditoria, tudo bem.