我无法想出更好的方式在标题中描述我的问题。对不起,如果这个问题的标题让你感到困惑。
假设我有一个用于管理学校课程的Web应用程序,其中包含以下两个表:
业务规则是课程的学生人数不能超过最大值。 当有人试图注册课程时,我们有以下逻辑:
但是,当存在并发请求时似乎存在问题。 假设有一个MaxNumOfStudent = 20的课程,已经有19名学生注册。
然后,当有两个人同时尝试注册课程时,从数据库查询的当前学生数将为19。因此,他们都将成功注册课程,使该课程(21)的学生人数大于最大值(20)。
我在google上发现处理数据库并发的唯一方法是添加时间戳或行版本,但这不能处理上述情况。我该如何处理这个问题?