如图说是,数据库中有这样的字段。现在的要求是:
如果当前时间超过了数据中的Jdate+Jdate3的时间,就将讲座状态设置为“已过期”
比如说到了2018-12-25 12:00,将第二条数据的Jstate自动更改为“已过期”
我原本设置的是,当用户登录时,检测当前时间并进行对比,然后修改状态,但是如果用户量太多了以后,每次登录都要对数据中该表所有数据进行遍历和修改,这会很麻烦。
所以我的想法是:有没有这样一种方法,能让数据库中的数据到了时间就自动检测并更改Jstate状态?
或者用更精简的方法来改变数据库的Jstate属性?不在用户登录的时候检测
需要比较详细的思路,编程代码用的是c#,其他语言的话也都可以
可以写一个后台定时任务,定时更新
谢谢哦,我尝试一下
我只说槽点,不是挑刺,解决了槽点,问题自然就解决了。
当用户登录时,检测当前时间并进行对比,然后修改状态
当用户登录时,检测就可以知道状态了,所以改不改状态,或者说状态字段存不存在,其实都是无所谓的。
再说了,A用户登录,你去遍历整个表,修改B用户和C用户的字段做啥?
谢谢哦,原本的设计的确是想着用空间换时间的,结果导致现在我有点过分关注Jstate了,没想到用其他方式来判断
@空眠: 个人觉得,你这个JState字段的冗余设计,由于会随时间的漂移产生变化,而不是完全决定于另外两个字段,而是决定于三个字段,一个是现实的时间。
那么就会产生新的问题,必须定期维护,而这个定期,问题就来了,多长的一个时间才是合理的?
这取决于你这个数据表,和字段的具体业务场景,你的业务规模,你的用户性质。
这些才是决定设计和解决方案的关键。
然而这些都没有提供。所以是没有办法给出具体的解决方案的。最多就是大概的,定时任务。
可以用c#搞定时任务,也可以用数据库搞定时任务。
SQL server好像有个“作业”的概念,也许能用上
写个任务程序放在服务器上自己跑就行了,我们系统有好多状态要检查,就会有很多后台服务在服务器上,让它自己跑就好了