需要查看用戶是否已經(jīng)投票,如果已經(jīng)投票,則不插入數(shù)據(jù),如果未投票,則插入數(shù)據(jù)。在并發(fā)的條件下,有可能用戶在同一時(shí)刻都查詢到未投票,然后導(dǎo)致插入多條數(shù)據(jù)。針對(duì)這樣的情況,有什么好的解決方案么?目前所知,用數(shù)據(jù)庫(kù)的事務(wù)并不會(huì)對(duì)select進(jìn)行加鎖,所以事務(wù)可能并不能解決這類問(wèn)題?難道只有select for update這類型的可以么?有什么什么主流一點(diǎn)的方法
1 回答

森林海
TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
用戶id和投票id做成聯(lián)合的唯一鍵即可.
CREATE TABLE user_vote_record ( user_id INT, vote_id INT, UNIQUE KEY uk_user_vote (user_id , vote_id) );
添加回答
舉報(bào)
0/150
提交
取消