需要查看用户是否已经投票,如果已经投票,则不插入数据,如果未投票,则插入数据。在并发的条件下,有可能用户在同一时刻都查询到未投票,然后导致插入多条数据。针对这样的情况,有什么好的解决方案么?目前所知,用数据库的事务并不会对select进行加锁,所以事务可能并不能解决这类问题?难道只有select for update这类型的可以么?有什么什么主流一点的方法
1 回答
森林海
TA贡献2011条经验 获得超2个赞
用户id和投票id做成联合的唯一键即可.
CREATE TABLE user_vote_record ( user_id INT, vote_id INT, UNIQUE KEY uk_user_vote (user_id , vote_id) );
添加回答
举报
0/150
提交
取消