怎么保证组内多条数据百分比之和始终为100,类似于秒杀问题

怎么保证所占比例的更新(并发下)为100%
这是可视化操作界面:

img


数据表:字段分别是id、name、abtestId、rate、desc;
怎么保证所属同一个abtestId下的rate总和始终是100,当并发更新下

查询相同abtestId的记录数,创建对应元素的数组,随机生成100以内的数据,然后对数组的值进行处理,确认准确后更新到数据库。

接口对表加锁,业务做验证

你这是用户直接更新rate字段?比如一个组有两条记录,更新其中一条为80的时候,另一条要自动变成20?
然后会出现两个会话分别更新两条记录,比如A会话更新第1条记录为80,B会话更新第2条记录为30,怎么让它最后相加还是100?
这不是个矛盾么?要想避免这个冲突,只能在事务开始时加锁,事务结束时解锁,强制让会话存在先后顺序,哪怕两个会话间只有1毫秒的差异,那它也是存在先后顺序的