SQL业余爱好者.
我有一张包含优惠券代码的表格:
id voucherCode UserId ------------------------ 1 abcde 13 2 bcdef 11 3 cdefg 4 defgh
现在,如果我的一个用户有资格获得优惠券代码,我会从我的表中获得一个:
SELECT TOP 1 * FROM tableName WHERE UserId IS NULL; UPDATE tableName SET UserId = @UserID WHERE id = @SelectedIdFromAboveSelect;
我必须确保每行只选择一次.如果多个用户需要凭证代码,则SELECT
和之间存在小的时间差UPDATE
.如果然后SELECT
执行第二次,则SELECT
第二次可以是同一行.我该如何预防呢?
我想你可以按相反的顺序做到; 我的意思是,你UPDATE
用表用户ID,然后SELECT
是voucherCode.这样你就不会有任何问题.