Triggers: O Lado Oculto dos Bancos de Dados

janeiro 10, 2025 | por dbsnoop

Assim como os sensores avançados da Estrela da Morte são capazes de rastrear automaticamente alvos e registrar tiros disparados, os triggers nos bancos de dados são guardiões automáticos que monitoram eventos e tomam ações sem que precisemos interferir manualmente. Eles são como os oficiais imperiais que documentam cada disparo para consulta futura — úteis, precisos e, claro, um pouco perigosos nas mãos erradas.

Vamos aprender a usar triggers para registrar todos os tiros disparados pela Estrela da Morte.

O Que São Triggers?

Triggers são pedaços de código que são executados automaticamente em resposta a certos eventos (como os tiros da Estrela da Morte contra planetas rebeldes). Esses eventos podem ser:

  • INSERT: Quando um novo tiro é registrado.
  • UPDATE: Quando um tiro é ajustado (exemplo: alguém ajusta a mira porque a primeira tentativa foi péssima).
  • DELETE: Quando registros de tiros antigos são removidos.

Eles são essenciais para automação, validação e auditoria.

O Cenário: Registrando Tiros da Estrela da Morte

Para este exemplo, temos duas tabelas:

  1. laser_shots: Contém os registros dos tiros disparados.
  2. shot_audit: Mantém um log de auditoria de todos os tiros disparados (porque Palpatine gosta de saber quem está fazendo o quê).

Estrutura das Tabelas

CREATE TABLE laser_shots (
    shot_id INT PRIMARY KEY,
    target VARCHAR(100),
    fired_by VARCHAR(100),
    timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE shot_audit (
    audit_id INT AUTO_INCREMENT PRIMARY KEY,
    shot_id INT,
    action VARCHAR(50),
    details VARCHAR(255),
    log_time DATETIME DEFAULT CURRENT_TIMESTAMP
);

Explicação:

  • A função log_laser_shot registra os tiros na tabela de auditoria.
  • NEW e CONCAT são usados para gerar os detalhes do registro.

Criando Triggers no SQL Server

No SQL Server, os triggers são configurados diretamente:

CREATE TRIGGER after_shot_insert
ON laser_shots
AFTER INSERT
AS
BEGIN
    INSERT INTO shot_audit (shot_id, action, details, log_time) 
    SELECT shot_id, 'INSERT', CONCAT('Tiro disparado por ', fired_by, ' contra ', target), GETDATE()
    FROM INSERTED;
END;

Explicação:

  • INSERTED: Uma pseudo-tabela que contém os dados da nova linha inserida.
  • CONCAT e GETDATE(): Geram a mensagem e registram a data/hora do evento.

Exemplo de Inserção de Tiros

Vamos simular o registro de tiros disparados:

INSERT INTO laser_shots (shot_id, target, fired_by)
VALUES (1, 'Alderaan', 'Darth Vader');

Resultado na Tabela de Auditoria:

audit_idshot_idactiondetailslog_time
11INSERTTiro disparado por Darth Vader em Alderaan2024-12-04 10:00:00

Cuidados ao Usar Triggers

  1. Performance: Assim como a Estrela da Morte exige muitos recursos para funcionar, triggers podem impactar o desempenho do banco se usados em excesso.
  2. Debugging: Como os triggers são “invisíveis”, erros podem ser difíceis de rastrear. Documente-os bem!
  3. Evite Abusos: Não use triggers para lógica de negócio complexa — deixe isso para a aplicação.

Dicas do Data Vader

Triggers são como o painel de controle da Estrela da Morte: monitoram eventos automaticamente, sem que você precise agir diretamente. Eles são perfeitos para tarefas como auditoria e automação, mas exigem sabedoria em seu uso.

Lembre-se: “Com grandes triggers vêm grandes responsabilidades de manutenção.” Que a Força (e a integridade dos seus dados) esteja com você! 

Caro Padawan, um trigger não precisa de um botão para ser acionado. Ele entra em cena automaticamente sempre que um evento de escrita — seja uma inserção, atualização ou deleção — ocorre em uma tabela. Em todos esses anos, já vi muitas aplicações robustas virarem sucata espacial porque “esqueceram” dos triggers escondidos nas profundezas do banco. Portanto, documente-os com carinho Jedi! Certifique-se de que os triggers apareçam tanto na documentação da aplicação quanto na do banco de dados, ou você pode acabar enfrentando o lado sombrio da manutenção.

Não se esqueça de dar uma olhada no nosso SaaS de monitoramento e observabilidade de banco de dados, o Flightdeck:

Agende uma demonstração aqui

Saiba mais sobre o Flightdeck!

triggers
Compartilhar:

Leia mais