当前位置:数据库 > MySQL >>

mysql 实现每月更新一次的触发器问题

数据库:mysql 触发器语句: create trigger updateMonthCount after update on u_useraccount begin if(DAYOFMONTH(NOW())=1) then set new.totalCount = new.totalCount+new.thisMonthCount; set new.lastMonthCount = new.thisMonthCount ; set new.thisMonthCount = 0; end if; end 把DAYOFMONTH(NOW())=1改成了MINUTE(NOW())=43后,等时间到了43分时,发现表没有做更新操作,求解
追问:[ON COMPLETION [NOT] PRESERVE] 
上面这句指的是任务整个执行完毕后,该计划任务对象是否还在数据库中保留。默认不保留
请问计划任务对象指的是什么?是指这个任务计划,还是指表?不会把表也删除掉吧?
还有,看了一些关于计划任务的资料,一般do后面都只有一句,能不能写多句的?
答案:1、触发器是update后激发的,我想你需要的是mysql计划任务。
2、计划任务状态
show variables like '%event%';
3、使用下列的任意一句开启计划任务:
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;   -- 0代表关闭
SET @@global.event_scheduler = 1;
4、创建event语法
help create event
5、实例
实例0:
每5分钟删除sms表上面ybmid为空白且createdate距现时间超过5分钟的数据。
USE test;
CREATE EVENT event_delnull
ON SCHEDULE
EVERY 5 MINUTE STARTS '2012-01-01 00:00:00' ENDS '2012-12-31 00:00:00'
DO
DELETE FROM sms WHERE ybmid='' AND TIMEDIFF(SYSDATE(),createdate)>'00:05:00';

 实例1:

每天调用存储过程一次:

mysql> delimiter //
mysql> create event updatePTOonSunday
    -> on schedule every 1 day
    -> do
    -> call updatePTO();
    -> //
Query OK, 0 rows affected (0.02 sec)

这里updatePTO()是数据库里自定义的存储过程
6、查看任务计划:
SELECT * FROM mysql.event\G

上一个:请大家帮我看看这个MySQL数据库创建语句有啥问题?
下一个:mysql 查询距离现在时间几分钟之前的语句

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,