1。 首先mysql必须使用5.1.X以上的版本,因为只有在该版本之上,mysql才提供 存储过程以及EVENT(事件)支持。
查看mysql版本可以使用命令:SELECT VERSION(); 进行查看。
2。 分别使用 SHOW VARIABLES LIKE 'performance_schema'; 以及 SHOW VARIABLES LIKE 'event_scheduler'; 命令,查看
这俩个数值的状态,均需要 为 NO 时,才能正常使用。默认状态为 OFF,请自行上网查询命令,修改其状态为 NO 即可。
eg: SET GLOBAL event_scheduler=1 修改事件命令。
3. 直接使用SQLYog等客户端连接工作,执行如下命令创建对象。
创建一个存储过程的例子命令,如下:
- DELIMITER $$
- CREATE
- /*[DEFINER = { user | CURRENT_USER }]*/
- PROCEDURE `test`.`cleanCaptcha`()
- /*LANGUAGE SQL
- | [NOT] DETERMINISTIC
- | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
- | SQL SECURITY { DEFINER | INVOKER }
- | COMMENT 'string'*/
- BEGIN
- DELETE FROM ANNOUNCEMENT WHERE TIMESTAMPDIFF(MINUTE,CREATE_TIME,NOW())>3;
- END$$
- DELIMITER ;
创建一个event事件命令,如下:
- -- 创建事件 event:event_name
- CREATE EVENT cleanCaptchaEvent
- -- 该事件从2013-01-23 00:30:00开始每5分钟执行一次
- ON SCHEDULE EVERY 5 MINUTE STARTS NOW()
- ON COMPLETION PRESERVE
- -- 调用上面写的 PROCEDURE
- DO CALL cleanCaptcha();
- //
- DELIMITER ;
4。 使用 SELECT * FROM information_schema.`EVENTS` 命令可以查看具体event执行的相关信息。
5。 以上方式操作后,就能实现mysql数据库自行定时调用存储过程。
1. [代码]查询数据库中的存储过程
1
2
3
|
select
`
name
`
from
mysql.proc
where
db =
'your_db_name'
and
`type` =
'PROCEDURE'
show
procedure
status;
|
2. [代码]查看存储过程或函数的创建代码
1
2
|
show
create
procedure
proc_name;
show
create
function
func_name;
|