我正在使用mysql,php。表 user_meetup id, user_id, meetup_id 具有唯一性 (user_id, meetup_id) 如果我的聚会受限于地点(10 个地点) 9 个用户已经标记了 rsvp 并且如果 2 个用户同时进行 RSVP(我只考虑了并发的情况)
A -> select count(id) from user_meetup -> result : 9 hence go ahead
B -> select count(id) from user_meetup -> result : 9 hence go ahead
A -> insert ......
B -> insert ......
现在他们两个都会到位,我的计数变成 11,我的解决方案是再添加一个表 user_meetup_count id、meetup_id、user_count(计数设置为 0 作为默认值,并且在创建聚会后立即创建记录)现在如果使用更新像 update user_meetup_count 这样的查询 set user_count = user_count + 1 where user_count < 10 如果我根据上面查询更新的行数写入 user_meetup 表,如果它返回 0 表示它已满,如果它返回 1 我得到了这个地方
如果 2 个用户同时尝试,这会起作用吗?我解决并发问题的方法对吗?有没有更好的办法 ?测试这种情况的工具是什么?