如果一条数据的状态为0,那么24小时候自动让它的状态变成1。这个怎么写啊!

夏承曦 发布于 2016/06/14 17:20
阅读 175
收藏 0
如果一条数据的状态为0,那么24小时候自动让它的状态变成1。这个怎么写啊!
加载中
0
小王爷威武

直接在SQL中搞定:如果当前时间减去24小时大于之前的修改时间,且状态为0,则查出结果为1.

SELECT CASE WHEN (SYSDATE - 1 > modify_time AND status = '0') THEN '1' ELSE status END FROM table_name




夏承曦
夏承曦
神一样的男人!厉害!!!
0
_Tomorrow
_Tomorrow
在数据库建立一个定时job,24小时执行一次
夏承曦
夏承曦
嗯。这个弊端解决不了。即使用定时器,也只能在夜里用户少的时候,执行一次;一天最多也就能执行两次。肯定会有这种弊端...没办法。谢谢你!!!
_Tomorrow
_Tomorrow
回复 @夏承曦 : 可以用游标遍历数据处理
_Tomorrow
_Tomorrow
回复 @夏承曦 : 在调用定时任务的时候判断当前时间减去最后更新时间是否大于或等于24小时,成立,更新成‘1’,否则不予更新,但是这样有个弊端,会出现超过24小时了,但是状态还没有变更,因为这时候还没有触发定时任务
夏承曦
夏承曦
而且,多条数据呢!变成0的时间都不一样。
夏承曦
夏承曦
这个数据是23点变成的0,我24点运行job,它变成1。那不就是1小时候后就变成1了吗!!!
0
会哭的鳄鱼
会哭的鳄鱼
那你记录一个字段,就是时间,用这个时间521比较是否超过24小时不就可以了嘛
夏承曦
夏承曦
如果写定时器,我写过。很好写!
夏承曦
夏承曦
亲,我没写过触发器。触发器可以循环遍历数据吗。多条数据的话,我得循环遍历出时间,然后判断时间>24小时。然后改变状态。
0
_Tomorrow
_Tomorrow
这个弊端是不好避免,但是你可以把定时job触发的时间缩短,处理的数据可以进行根据更新时间和触发时间进行控制,避免大数据量操作,半个小时触发一次应该就比较精确了,希望能帮到你吧
夏承曦
夏承曦
谢谢你!亲,这个对服务器的压力会不会很大啊?
0
m
mr吴
你可以动态添加job,在job执行完之后,删除对应job,可以会存在多个同一时间的job,但是这个问题是貌似不会很难解决。
夏承曦
夏承曦
谢谢你!厉害!
0
J
JINGSER
定时计划,更新
返回顶部
顶部