Triggers são blocos de código SQL que são automaticamente executados ou "disparados" quando um determinado evento ocorre em uma tabela do banco de dados. Eles são comumente usados para manter a integridade dos dados, registrar auditorias, ou executar ações automáticas quando os dados em uma tabela são modificados.

Vamos explorar três tipos comuns de triggers: AFTER INSERT, BEFORE DELETE, e AFTER UPDATE.

1. AFTER INSERT

O trigger AFTER INSERT é executado automaticamente após a inserção de um novo registro em uma tabela. Ele é útil quando você precisa realizar uma ação logo após a inserção, como registrar um log, atualizar outra tabela ou enviar notificações.

Exemplo: Suponha que temos uma tabela Pedidos e uma tabela Logs_Pedidos. Queremos registrar cada novo pedido que é inserido na tabela Pedidos na tabela Logs_Pedidos.

CREATE TRIGGER log_after_insert_pedido
AFTER INSERT ON Pedidos
FOR EACH ROW
BEGIN
    INSERT INTO Logs_Pedidos (id_pedido, acao, data_hora)
    VALUES (NEW.id_pedido, 'INSERT', NOW());
END;

Explicação:

2. BEFORE DELETE

O trigger BEFORE DELETE é executado antes de um registro ser deletado de uma tabela. Ele é útil para verificar condições, evitar exclusões indesejadas, ou realizar ações antes da exclusão, como registrar auditorias ou transferir dados para uma tabela de histórico.

Exemplo: Suponha que temos uma tabela Empregados e queremos registrar as exclusões de empregados em uma tabela Historico_Exclusoes antes que o registro seja realmente excluído.

CREATE TRIGGER historico_before_delete_empregado
BEFORE DELETE ON Empregados
FOR EACH ROW
BEGIN
    INSERT INTO Historico_Exclusoes (id_empregado, nome, data_exclusao)
    VALUES (OLD.id_empregado, OLD.nome, NOW());
END;

Explicação:

3. AFTER UPDATE