当前位置:  开发笔记 > 数据库 > 正文

如何锁定一行以便select只返回一次行?

如何解决《如何锁定一行以便select只返回一次行?》经验,为你挑选了1个好方法。

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第二次可以是同一行.我该如何预防呢?



1> 小智..:

我想你可以按相反的顺序做到; 我的意思是,你UPDATE用表用户ID,然后SELECT是voucherCode.这样你就不会有任何问题.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有