0
我试图给用户提供一种独特的随机代码,但没有跳过范围内的任何数字。我的表是这样的具有最小值的Oracle更新行
RandomCode | IsUsed | RNum
--------------------------
002 | Y | 1
004 | Y | 2
003 | NULL | 3
005 | Y | 4
001 | NULL | 5
所以下次randomcode使用应该是003,然后001的问题是用户可以返回的代码,我应该给这个数字将someonelse。在那种情况下,我将IsUsed设置为NULL。
我试过用IsUsed列选择最小Rnum为NULL。然后更新表格。但遇到的竞争条件和用户得到重复的RandomCode。
到
更新表 设置任何帮助IsUsed = N'Y” WHERE IsUsed = NULL和RNUM = MIN(RNUM) RETURNING
它会导致数据库锁吗? – n3xus 2013-04-08 11:06:23
为什么你不尝试自己并加载测试你的查询?这样,你的概念就会变得更加清晰,你将学到很多其他的东西。我评论这不会是对我来说正确的事情。 :) – Rachcha 2013-04-08 18:58:58
感谢您的评论rachcha。但我认为这是造成种族问题的原因。 – n3xus 2013-04-09 01:17:43