怎样实现一个按天递增的mysql字段,大佬们帮忙想想有没有好的解决方案
需求:需要一个按日自增的字段,这个字段的规则为 日期+递增量,且每日归零。
举例:今日第一条记录该字段值为
202203251
,然后今日第二条记录为202203252
,以此类推。然后明天第一条记录为202203261,明天第二条记录为202203262 …
目前我自己能想到的方案有两种:
第一种方案:每次插入数据时先在PHP里查询出最新的一条mysql记录,然后在PHP里计算出下一条记录的字段值应该为多少。
第二种方案:利用mysql事件(定时任务)和mysql自定义函数。
但是我感觉这两种方案都太麻烦,不知道大佬们有没有什么好的方案,欢迎讨论^ ^
本作品采用《CC 协议》,转载必须注明作者和本文链接
把问题简单化,你只需要一个每天的计数。按这个思路考虑下
意义何在? 新增一个新的字段 替换他就好
redis 的 incr 命令了解一下 用日期做为 key
...简单点,数据库只存储一个计数,再设置linux定时任务每日零点置零
第一个方案感觉还可以,维护简单,但可能同时插入时的数据重复,是否还需要加锁或者
unique_key
来处理异常。 我想到的是利用另一个表的主键自增的特点来返回值,可能避免重复记录的情况,但这样维护成本高些你要的只是一个当天的最大计数,两条SQL语句就搞定了吧!
insert into day_count(year,month,day,max) values(2022,03,26,1) ON DUPLICATE KEY UPDATE max = max+1
select year,month,day,max from day_count where year = 2022 and month = 03 and day = 26