我相信您正在从相反的方向思考:您无法在存储过程中创建事件,但您可以can创建一个存储过程并从事件中调用它。
Example:
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 ;
您可以像工作台中的任何其他查询一样编写此查询,也可以直接在命令行客户端中编写。
关于您关心的问题
读完您的评论后,我相信您对 MySQL Workbench 是什么有点困惑。
MySQL Workbench 只是一个图形应用程序,允许您连接到 MySQL 服务器并执行查询和管理任务。但工作台is notMySQL 的核心...它只是一个查看器(也许有类固醇,但毕竟是一个查看器)。
现在,事件调度程序并不驻留在 Workbench 中,而是驻留在您要连接的 MySQL 服务器实例中。正如表、视图、过程和函数不是存储在 Workbench 界面中而是存储在服务器中一样,事件也存储在服务器中。
(是的,我相信这是一个相关的问题,预定的事件没有在图形界面中的任何地方显示,但是......过了一段时间,人们学会忍受这种挫折并继续生活)
也许您唯一关心的是:“嘿,如果我想知道事件调度程序中设置了哪些事件运行怎么办?”您可以执行“show events”查询来显示当前数据库中的事件列表,并且可以执行“show create event yourEvent”来显示create event
该事件的语法。
我坚持:阅读手册,并保留一份手头的副本(下载适合您的 MySQL 版本的手册here).