场景业务:
1.每人可参加一次抽奖。2.参与抽奖就可得到奖品,先到先得直到奖品发完。
3.现有一张奖池表和抽奖记录表
解决方法1
奖池表中设置state字段初始未0代表未被抽取得奖品。
抽奖时现获取第一个未被抽取奖品
select 奖池表ID from 奖池表 where state = 0 and rownum =1
然后更新奖池表
update 奖池表 set state = 1 where 奖池表ID=?and state = 0 (state = 0不能少,具体可查看乐观锁定义)
更新成功说明该奖品未被领取,更新失败说明奖品已被领取过。