Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Trabalhando com eventos no MySQL


Acredito que você esteja pensando na direção oposta:você não pode criar um evento em um procedimento armazenado, mas pode crie um procedimento armazenado e chame-o de um evento.

Exemplo:
delimiter $$
create procedure myProc()
-- Dummy procedure to move the data from mainTable to backupTable, 
-- and then clear (truncate) mainTable
begin
    insert into backupTable select * from mainTable;
    truncate mainTable;
end $$
delimiter ;

-- Now, suposing that you want to execute this procedure every hour:
delimiter $$
create event myEvent
    on schedule every 1 hour
    do
        begin
            call myProc();
        end $$
delimiter ;

Você pode escrever isso como qualquer outra consulta no ambiente de trabalho ou diretamente no cliente de linha de comando.

Sobre sua preocupação

Depois de ler seu comentário, acredito que você esteja um pouco confuso sobre o que é o MySQL Workbench.

MySQL Workbench é apenas um aplicativo gráfico que permite conectar-se a um servidor MySQL e realizar consultas e tarefas de administração. Mas o Workbench não o núcleo do MySQL... é apenas um visualizador (com esteróides, talvez, mas um visualizador afinal).

Agora, o agendador de eventos não reside no Workbench, mas na instância do servidor MySQL à qual você está se conectando. Assim como as tabelas, visualizações, procedimentos e funções não são armazenados na interface do Workbench, mas no servidor, os eventos também são armazenados no servidor.

(Sim, eu acredito que seja um SNAFU relevante que os eventos programados não apareçam em nenhum lugar na interface gráfica, mas... depois de um tempo, a pessoa aprende a conviver com esse tipo de frustração e seguir em frente com a vida)

Talvez sua única preocupação seja:"Ei, e se eu quiser saber quais eventos estão configurados para serem executados no agendador de eventos?" Você pode executar uma consulta "show events" para mostrar uma lista dos eventos no banco de dados atual e pode executar "show create event yourEvent" para mostrar o create event sintaxe para esse evento.

Insisto:leia o manual e mantenha uma cópia à mão (faça o download do manual para sua versão do MySQL aqui ).