![]() |
1
1
这里需要一些同步代码:)
创建一个专用的过程,它将服务于单一目的:产生数字。
这种方法还有另一个优点:由于进程已经是有状态的,所以实际上不需要每次都查询数据库。只需在进程启动时查询并将当前号码保存到
|
![]() |
2
0
最简单的解决方案是,您可以让自动递增的ID成为注册号的第一部分,并将两位数的年份单独存储为一个字段。然后,在模型中,您只需要有一个方法“get_registration_number”,它构成了这两个方法。这样可以解决重复的问题。 不利的一面是,你会在2019年最后一个学生是890/19,然后在2020年第一个学生是891/20,而不是01/20。但是您的示例似乎也不能很好地处理这个案例,并且它是隐含的,但不清楚这是一个需求。 如果是这样,您可以创建一个自动递增的列(比如id_num),而不是让id作为第一部分,然后当年份更改时,将该列的下一个值重置为1。如果你想成为偏执狂,你可以说“id_num”列和“2位数字”列一起构成一个唯一的键。 TL;DR:处理这个问题的最简单方法是让数据库处理它。 |
![]() |
Bitwise · 使用EXTO计算关联的模型行 6 年前 |
![]() |
isignisign · 预加载的数据在转换为JSON时丢失 6 年前 |
![]() |
Sh4dy · 使用Timex设置验证链接的超时 7 年前 |
![]() |
nullnullnull · 更新EXTO变更集中不允许的值 7 年前 |
![]() |
Alan · 异位迁移:删除引用,保留字段 7 年前 |
![]() |
David Magalhães cpu · 预加载尝试获取错误的列名 7 年前 |
![]() |
category · 使用EXTO的相关子查询 7 年前 |
![]() |
script · 编写一个查询,以根据max获得完整的记录 7 年前 |