sql >> Base de Datos >  >> RDS >> Mysql

Trabajar con eventos en MySQL

Creo que está pensando esto en la dirección opuesta:no puede crear un evento en un procedimiento almacenado, pero puede cree un procedimiento almacenado y llámelo desde un evento.

Ejemplo:

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 ;

Puede escribir esto como cualquier otra consulta en el banco de trabajo o directamente en el cliente de línea de comandos.

Acerca de su inquietud

Después de leer su comentario, creo que está un poco confundido acerca de qué es MySQL Workbench.

MySQL Workbench es solo una aplicación gráfica que le permite conectarse a un servidor MySQL y realizar consultas y tareas de administración. Pero Workbench no lo es el núcleo de MySQL... es sólo un visor (con esteroides, tal vez, pero un visor después de todo).

Ahora, el programador de eventos no reside en Workbench, sino en la instancia del servidor MySQL a la que se está conectando. Así como las tablas, vistas, procedimientos y funciones no se almacenan en la interfaz de Workbench sino en el servidor, los eventos también se almacenan en el servidor.

(Sí, creo que es un SNAFU relevante que los eventos programados no se muestran en ninguna parte de la interfaz gráfica, pero... después de un tiempo, uno aprende a vivir con ese tipo de frustraciones y a seguir con la vida)

Tal vez su única preocupación sea:"Oye, ¿y si quiero saber qué eventos están configurados para ejecutarse en el programador de eventos?" Puede ejecutar una consulta de "mostrar eventos" para mostrar una lista de los eventos en la base de datos actual, y puede ejecutar "mostrar crear evento suEvento" para mostrar el create event sintaxis para ese evento.

Insisto:Lea el manual y tenga una copia a mano (descargue el manual para su versión de MySQL aquí ).