首先讲讲过程是什么东西, 过程差不多就是SQL用的java之于方法.
把一段sql做成过程后一个简单的调用就可以批量执行这些sql,很方便.
其实就像java后台写个执行复杂sql的方法,你只是把这段sql存到数据库里了而已.
mysql里面有"过程"和"函数"两个概念, 基本上前者用来进行一些数据表改动或者返回数据表等大量数据,
CREATE PROCEDURE test_procedure (IN inpput INT)
BEGIN
set @VAR= concat("test", inpput, (select CAST(count(*) AS CHAR) from source));
insert into source (linked,note) values(@var, 'test');
END
第一行create procedure后面跟过程名称,括号里面填写参数,
后者用于返回一些小的参数用于执行其他sql. 两者对比另有他人文章我就不多说明.
在这篇里面讲一下怎样实现定时插入数据的功能
下面结合具体代码解释
往表"source"插入数据的过程创建:
参数有输入,输出,输入并输出,详细参阅其他文章吧, 这里简单输入一个数字作为字段内容
然后接begin, end,里面填写要执行的sql
@VAR是变量, 用来生成个插入用的文字,这里的效果是等于test+输入的数字+source表的行数
执行一下,test_procedure过程就创建好了,调用的方法是CALL 过程名,例如下面的
CALL test_procedure(123)
下面就是建立一个事件定时执行这个插入过程
CREATE EVENT test_event
ON SCHEDULE EVERY 10 SECOND
ON COMPLETION NOT PRESERVE
DISABLE
DO
CALL test_procedure(123);
create event 事件名
on schedule后面设定事件发生时间,可以设定一个时间点,也可以设定周期,这里设置周期10秒
on completion设置事件结束后是否销毁,not preserve是不保存,销毁,去掉not就保留着,可以以后再次启动事件
下面一个disable,enable表示创建时候是否就启动
Do 后面就是具体执行的内容了,这里调用test_procedure过程
最后控制事件的启动与停止,如下
ALTER EVENT test_event ENABLE;
用alter event 事件名 状态来改变,enable就启动了,看看表格发现数据不断增多,可以用来测试了