- 创建一个表
DROP TABLE IF EXISTS `test_sche`; CREATE TABLE `test_sche` ( `id` int(11) NOT NULL, `counts` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of test_sche -- ---------------------------- INSERT INTO `test_sche` VALUES ('1', '188');
- 创建一个存储过程
- 方式一
CREATE DEFINER = `root` @`localhost` PROCEDURE `pro_add` () BEGIN #Routine body goes here... UPDATE test_sche SET counts=counts+1 WHERE id=1; END
- 方式二
DROP PROCEDURE IF EXISTS pro_add; CREATE PROCEDURE pro_add () # 名称:pro_save_ap_manage_result_ BEGIN # 开始 -- --------------内容开始-------------------------- UPDATE test_sche SET counts=counts+1 WHERE id=1; #以';'结束 #多条语句 select now();#以';'结束 -- --------------注意“;”内容结束-------------------------- END; #结束
注意:mysql默认的语句分隔符为
;
,命令行的方式创建存储过程的时候,可以根据需要先修改命令结束符,将分号改成其他的符号,如$$
,这样在后续的 create 到 end 间的代码都会看成是一条语句来执行,最后再将语句分割符设置回;
delimiter $$ # 设置分隔符为 '$$' ,mysql默认的语句分隔符为 ';' ,这样在后续的 create 到 end 这段代码都会看成是一条语句来执行 CREATE PROCEDURE pro_add(IN p_in int) BEGIN # 开始 UPDATE test_sche SET counts=counts+1 WHERE id=1; END$$ # 结束 DELIMITER ; # 将语句的结束符号恢复为分号
- 创建一个事件,并调用存储过程
CREATE DEFINER = `root` @`localhost` EVENT `event_test_sche_` ON SCHEDULE EVERY 5 SECOND STARTS '2016-07-12 22:11:50' # 5 秒执行一次 ON COMPLETION NOT PRESERVE ENABLE DO CALL `pro_add`
DROP EVENT IF EXISTS event_test_sche_; CREATE EVENT `event_test_sche_` ON SCHEDULE EVERY 1 month STARTS '2016-10-01 00:00:00' # 每月1号执行 ON COMPLETION NOT PRESERVE ENABLE DO CALL `pro_add`
- 查看事件运行状态
select * from mysql.event
- 开启或者关闭事件
ALTER EVENT event_test_sche_DISABLE; ALTER EVENT event_test_sche_ENABLE;