问题:
如图说是,数据库中有这样的字段。现在的要求是:
如果当前时间超过了数据中的Jdate+Jdate3的时间,就将讲座状态设置为“已过期”
比如说到了2018-12-25 12:00,将第二条数据的Jstate自动更改为“已过期”
我原本设置的是,当用户登录时,检测当前时间并进行对比,然后修改状态,但是如果用户量太多了以后,每次登录都要对数据中该表所有数据进行遍历和修改,这会很麻烦。
所以我的想法是:有没有这样一种方法,能让数据库中的数据到了时间就自动检测并更改Jstate状态?
或者用更精简的方法来改变数据库的Jstate属性?不在用户登录的时候检测
需要比较详细的思路,编程代码用的是c#,其他语言的话也都可以
回答1:
可以写一个后台定时任务,定时更新
回答2:
我只说槽点,不是挑刺,解决了槽点,问题自然就解决了。
- JDate, Jdate3, JState 这三个字段只需要有两个字段,第三个字段 JState 在数据库设计范式中称为冗余字段。
- 这样的冗余字段设计并不是不可以,通常是空间换时间的做法。
当用户登录时,检测当前时间并进行对比,然后修改状态
当用户登录时,检测就可以知道状态了,所以改不改状态,或者说状态字段存不存在,其实都是无所谓的。
再说了,A用户登录,你去遍历整个表,修改B用户和C用户的字段做啥?- 如果是小系统,想在查询的时候,显示“已过期”、“审核通过”等文字,没有JState一样能完成,在UI层做点手脚就行了。
- 如果是大一点的系统,我就不说话了....园里的高手太多了。
回答3:
可以用c#搞定时任务,也可以用数据库搞定时任务。
回答4:
SQL server好像有个“作业”的概念,也许能用上
回答5:
写个任务程序放在服务器上自己跑就行了,我们系统有好多状态要检查,就会有很多后台服务在服务器上,让它自己跑就好了
标签:
Ta的文章
更多文章
0条评论
还没有人评论过~