O recurso EVENT do MySQL permite criar tarefas automáticas que são executadas em determinados horários ou intervalos de tempo.
Ele funciona como um agendador interno do banco de dados, semelhante ao Agendador de Tarefas do Windows ou ao CRON do Linux.
Primeiro é necessário verificar se o agendador está ativo.
SHOW VARIABLES LIKE 'event_scheduler';
Para ativar:
SET GLOBAL event_scheduler = ON;
CREATE EVENT nome_evento
ON SCHEDULE
tempo_execucao
DO
comando SQL;
Podemos criar um evento que executa apenas uma vez.
CREATE EVENT remover_logs
ON SCHEDULE
AT '2026-08-01 00:00:00'
DO
DELETE FROM logs;
Eventos também podem executar automaticamente em intervalos definidos.
CREATE EVENT atualizar_relatorio
ON SCHEDULE
EVERY 1 DAY
DO
CALL gerar_relatorio();
| Intervalo | Exemplo |
|---|---|
| SECOND | A cada segundos |
| MINUTE | A cada minutos |
| HOUR | A cada horas |
| DAY | Diariamente |
| MONTH | Mensalmente |
Remover registros antigos automaticamente.
CREATE EVENT limpar_logs
ON SCHEDULE
EVERY 7 DAY
DO
DELETE FROM logs
WHERE data < NOW() - INTERVAL 30 DAY;
SHOW EVENTS;
ALTER EVENT nome_evento
ON SCHEDULE
EVERY 1 MONTH;
DROP EVENT nome_evento;
| EVENT | TRIGGER |
|---|---|
| Executa por horário | Executa por ação |
| Baseado em calendário | Baseado em INSERT, UPDATE e DELETE |
| Automação programada | Automação por evento |
| Sistema | Aplicação |
|---|---|
| E-commerce | Atualização automática de preços |
| Banco | Processamentos noturnos |
| ERP | Geração de relatórios |
| Empresas | Limpeza de dados antigos |
| Cuidado | Motivo |
|---|---|
| Muitos eventos | Pode consumir recursos |
| Comandos pesados | Pode afetar desempenho |
| Falta de documentação | Dificulta manutenção |
| Horários incorretos | Executa processos errados |