我试图为用户提供一种独特的随机代码,但不跳过范围内的任何数字。我的桌子是这样的
RandomCode | IsUsed | RNum
--------------------------
002 | Y | 1
004 | Y | 2
003 | NULL | 3
005 | Y | 4
001 | NULL | 5
所以下一个要使用的随机码应该是 003,然后是 001。问题是用户可以返回代码,我应该把那个号码给别人。在这种情况下,我将 IsUsed 设置为 NULL。
我尝试将 IsUsed 列的最小 Rnum 选择为 NULL。然后更新表格。但是遇到了 Race 条件,用户得到了重复的 RandomCode。
任何帮助
UPDATE TABLE SET IsUsed = N'Y' WHERE IsUsed = NULL 并且 RNum = MIN(RNUM) 返回