Oli*_*ter 1 sql t-sql database sql-server sql-server-2014
SQL业余爱好者.
我有一张包含优惠券代码的表格:
id voucherCode UserId
------------------------
1 abcde 13
2 bcdef 11
3 cdefg
4 defgh
Run Code Online (Sandbox Code Playgroud)
现在,如果我的一个用户有资格获得优惠券代码,我会从我的表中获得一个:
SELECT TOP 1 * FROM tableName WHERE UserId IS NULL;
UPDATE tableName SET UserId = @UserID WHERE id = @SelectedIdFromAboveSelect;
Run Code Online (Sandbox Code Playgroud)
我必须确保每行只选择一次.如果多个用户需要凭证代码,则SELECT和之间存在小的时间差UPDATE.如果然后SELECT执行第二次,则SELECT第二次可以是同一行.我该如何预防呢?
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |