【发布时间】:2016-03-24 01:49:34
【问题描述】:
这里是 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 同一行。我该如何防止呢?
【问题讨论】:
-
TOP 1 ... FROM tableName所以你根据执行计划选择用户。
标签: sql sql-server database tsql sql-server-2014