创建定时器:
create event myevent on schedule every 30 second
starts current_timestamp
do
update manager set b_hostState=0 where now()-interval 80 second> d_lastUpdate;创建触发器:
delimiter |
create trigger manager_bu before update on manager for each row
begin
set new.d_lastUpdate=now(); end;|
delimiter ;
显然定时器的update对update触发器产生了影响,但是影响很严重:有的记录是0,但有的记录就是1,不变0了,怎么回事?
create event myevent on schedule every 30 second
starts current_timestamp
do
update manager set b_hostState=0 where now()-interval 80 second> d_lastUpdate;创建触发器:
delimiter |
create trigger manager_bu before update on manager for each row
begin
set new.d_lastUpdate=now(); end;|
delimiter ;
显然定时器的update对update触发器产生了影响,但是影响很严重:有的记录是0,但有的记录就是1,不变0了,怎么回事?
解决方案 »
- 一个SELECT得不到查询结果
- 可持久连接吗?
- 通过php网页向mysql中保存一个“晅”字每次都是乱码,请达人解决
- 我第一次来提问哦,希望各位帮帮忙,谁能帮帮我,告诉我C#和JSP如何连接mysql?谢谢了
- mysql中如何得到服务器下所有数据库
- mysql 到 oracle 的数据转换
- sqlserver转mysql的问题
- 简单的不能再简单了,先答先得分
- ERROR 1045 (28000): Access denied for user 'root'@'localhost'[灌水免进 有分了可以补给]
- 这样的query可以实现吗?紧急求助
- 连接mysql数据库时出现Table 'djteddy.logoname' doesn't exist
- 我对MySQL的C API觉得莫名奇妙的的一点,关于MYSQL_ROW
看看其实你上面的操作可以不用触发器,直接在update语句里面一步到位了:
create event myevent on schedule every 30 second
starts current_timestamp
do
update manager set b_hostState=0,d_lastUpdate=now() where now()-interval 80 second> d_lastUpdate;
我查询了select * from manager(触发器所在的表),可以显示的,没有问题
按照你上面的写法,对于一条记录的更改都不起作用了.......
数据字典至于你的问题,建议你能提供相关的测试方法,也就是如果在其它机器上再现你的问题。
比如你的 create table / create event / create trigger
还有你的 insert , update 语句。这样其它人可以进行测试。
最终代码修改为创建定时器:
create event myevent on schedule every 10 second
starts current_timestamp
do
update manager set b_hostState=0 where b_hostState=1 and now()-interval 70 second> d_updateTime;创建触发器:
delimiter |
create trigger manager_bu before update on manager for each row
begin
set new.d_updateTime=now();
end;|
delimiter ;
问题解决了,但还有一个疑问:从测试结果来从update 到set b_hostState=0的时间正好相差10second的整数倍,这是没什么呢?每条记录的update时间是不一样的,检测的时间都是固定的周期,难道event 对每条记录单独起作用?为什么会相差很好解释,为什么都是10second的整数倍呢?求解~~~~~