某条数据一天只能刷新十次,这个要怎么做?

解决方案 »

  1.   

    首先把数据要有的标识比如FlagTotal  然后就是update了,  每次修改都为falgTotal = FalgTotal + 1       当FalgTotal >=10的时候就Throws咯                                               
                                                              不知道看的懂不,看懂了就给分.谢谢合作
     
      

  2.   

    可以写个定时器,每天晚上12点定时清零还有可以考虑用cookie来实现,不过这有个缺陷,清除临时数据就不管用了
      

  3.   

    用SimpleDateFormat取时间出来对比行不?
      

  4.   


    在网上看那个Timer这个方法需要点击才能运行,不能自动运行?
      

  5.   

    接上述,计数器在增加时,可以判定,但是如何修改回来,要么用JOB,要么用Timer,要么自己用线程定时执行,要么在数据库内部增加一个日期字段;这些办法我想只要用一用稍微修改就能达到目的,我提出方法,如果可以的话,你可以试一试,这个办法可能稍微麻烦一点,首先数据库内部的计数器照常建立。
    将判定逻辑抽出来作为一个函数(方法),当发现计数器的数据超过10时,在返回不允许修改的同时,在内存中记录下一下东西:行标识(可以记录关键字或者ROWID)、日期(精确到天)表示这个日期或者这个以前的日期已经不允许修改了。
    那么这个判定逻辑的伪代码主要如下:
    1、创建静态Map结构,其中KEY为记录的关键字或者ROWID,若为关键字且关键字为数字,加一个规定的字母前缀为关键字。
    2、当根据入参的关键字在MAP中找到,并且日期和MAP中一致,则直接返回false,若存在但日期不一致,此时将Map中对应数据去掉,并将数据库的计数器修改为1。
    3、若Map中没有数据,则增加计数器数字,并获取是否已经大于等于10,若是,将该行关键字和当前日期装入MAP中。其核心逻辑放入JAVA中了,在内存中操作注意共享内存的并发问题。如果数据不算多的话,可以将数据直接装入内存并计数器也装入内存中也可(也就是数据库中不用这个字段了)。付:上述方式不适用于应用服务器集群情况,因为集群中这个数据是不准确的。这个时候要么内存同步(这个代价太大),另一个就是基于数据库来完成了。如何修改就是上述的JOB、TIMER、自定义线程(其实TIMER本身就是线程);就后者几种方法,若不存在多线程的操作,还是比较推荐JOB,因为它对数据库操作死掉的概率很低。
      

  6.   

    加两个字段total modifiedDate
    modifiedDate不是今天,更新total=1,modifiedDate=new Date(),取得数据。modifiedDate是今天,total<10,total+=1,modifiedDate=new Date(),取得数据;total>=10,抛异常。