一张图片,一下午的时间没了,直接上图,然后慢慢讲解
先解释下每一行的sql啥意思
TRUNCATE TABLE `table`;
删除表中数据,让他从0开始增长
UPDATE `line_table` SET time = DATE_ADD(time,INTERVAL 1 DAY)
往后加一天Date_add,向前加一天就是Date_sub,两个基本函数而已,没啥意义
CREATE EVENT if not exists e_test
on schedule every 3 second
do CALL test ();
运行存储过程test,这是一个event事件,写的有存储过程的话直接CALL存储过程名字就可以了,如果想直接运行SQL直接DO后面直接写sql就可以,亲测也可以实现
show variables like '%sche%';
查看Event事件是否开启,这个很重要,第一次运行存储过程没反应,找了好久的错误才找到,嗯,这个切记,一定要开启事务
set global event_scheduler=1;
将时间任务开启0是关,1是开,所以在这里设置为1
alter event e_test ON COMPLETION PRESERVE ENABLE;
同理Enable是开,Disable就是关
DROP EVENT IF EXISTS e_test
删除事件,尽量用if exists判断一下,因为如果在你删除的时候万一不存在这个事件,不就报错了吗,多写两个单词少个错误提示挺好的
CREATE PROCEDURE test ()
BEGIN
UPDATE xczh.line_table SET time = DATE_ADD(time,INTERVAL 1 DAY);
END;
存储过程,就是一个proceduer,创建一个存储过程,然后Begin开始end结束,当然也有复杂的存储过程,多添加一些条件罢了
也就这么多吧,至于触发器就不写了,那个东西用的比较多,比较熟悉,说白了就是特殊的存储过程,尽量少用触发器,因为占用内存比较大,针对那些不经常改变的表用一下还是挺好的,如果经常改动的表,不建议使用触发器,
下班了才发现一个很严重的问题,一开始的思路就错了,一个用户对应三十天数据,明明直接一直存,只查询最近三十天的数据就可以了,非要搞什么存储过程,改变日期什么的,好吧,白忙活了,哈哈,明天直接用一个存储过程中的定时器,直接一步到位就OK了,定时器先不写了,今天就到这里吧,看会学习视频,打打游戏,吃饭睡觉