
MySQL从51开始支持event功能,类似oracle的job功能。
创建定时器 调用的存储过程
DELIMITER $$
DROP PROCEDURE IF EXISTS e_test $$
CREATE PROCEDURE e_test()
BEGIN
update pcdemo set v_isbag=0 where v_isbag=1 and to_days(now())-to_days(d_lasttime)>=10;
END $$
DELIMITER ;
要使定时起作用 MySQL的常量GLOBAL event_scheduler必须为on或者是1
查看是否开启定时器
SHOW VARIABLES LIKE '%sche%';
开启定时器 0:off 1:on
SET GLOBAL event_scheduler = 1;
创建事件
--每隔一秒自动调用e_test()存储过程
CREATE EVENT IF NOT EXISTS event_test
ON SCHEDULE EVERY 1 SECOND
ON COMPLETION PRESERVE
DO CALL e_test();
开启事件
ALTER EVENT event_test ON
COMPLETION PRESERVE ENABLE;
关闭事件
ALTER EVENT event_test ON
COMPLETION PRESERVE DISABLE;
Anllen,这样做是不科学的,如果是定时发送你可以考虑使用sql server中的计划,他可以定义执行某些任务,同时在sql server 2005以后还加入机器空闲时执行等等,而且还是可在失败时重试(重试次数自己设置),还可以对部分成功时进行记录等等。
如果是要求立即执行或是其他不能指执行条件时,可以考虑sql server 2005之后的server broker,这种机制较为安全。同时因为使用queue的原因,使消息只到达一次而不会重复,解决实际工作中的数据库与程序间的异步传输问题。
既然有这么多好的方案为什么还考虑重复地循环地查询数据库呢——你的数据库效率被拉的很慢的,别忘记了还是许多锁机制,会导致SQL server不再及时响应外部请求的!
首先你需要一个页面定时器
每10秒调用一次showMsg()的函数
setInterval("showMsg()",10000);
function showMsg(){
$post("xxxxxdo",{method:"msg"}, function(data) {
var tab = [];
tab[0]= "<table width='148' border='1' style='bgcolor:#FF0088;border:5px solid #AAAAAA;line-height:18px; margin:0;'>";
tab[1]= "<tr bgcolor='#F5DEB3' style='border:5px #FF0000;'>";
tab[2]= "<td align='center'><b>即时消息</b></td>";
tab[3]= "</tr>";
tab[4]= "<tr bgcolor='#EEFFBB'>";
tab[5]= "<td id='msgBox'>"+data+"</td>";
tab[6]= "</tr>";
tab[7]= "</table>";
var tabmsg = tabjoin("");
if(data!="")
$("#msgBox")html(tabmsg);
});
}
//这句就需要你把他加到你需要显示的位置了,这里显示你的信息
<div id="msgBox"></div>
以上就是关于mysql定时 *** 作有关时间差的问题全部的内容,包括:mysql定时 *** 作有关时间差的问题、C# 定时查询SQLServer数据库,并且将查询到的数据循环发送。请给个代码案例谢谢~ 网站的引用也可以。、struts2,定时查询数据库,然后将查询出来的信息显示在右下角d出的小框中。谁有类似代码,悬赏50!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)