同时修改同一条记录的问题

如果用户提交了一个任务,就会在数据库产生一条记录,此时该记录的状态字段是待执行。
后台会定时去处理这个任务,该任务分为好多个阶段,进入每个阶段都会更新对应记录的状态字段。
且用户还可以主动发起“暂停”、“取消”等操作,对记录的影响就是状态字段的更新。
现在问题是,如果后台正在更新状态字段,用户主动发起了“取消”操作,就可能出现两个地方同时更新一条记录的现象,这种问题一般怎么解决,都是使用版本号来解决吗?

可以考虑从三个方面解决该问题
1.如同楼上所说,代码中的更新状态操作加上同步锁,但是不建议,数据量大的时候会严重影响效率
2.如果数据库选用的mysql,存储引擎选用的默认的innodb,那么可以在代码中设置mysql数据库事务隔离级别,保证事务提交后才能其他事务才能修改
3.可以在该状态字段添加索引,因为mysql对于有索引的数据记录默认添加行锁,对于同一条记录,当一个update未执行完成的时候,其他的update和delete语句会进入阻塞状态,只有当前的update提交之后才会允许其他语句修改。

可以使用版本号来控制,或者使用同步这个性能差点