我们有一个表格,其中有文档的参考编号。这个表的简化版本,称为RefNum,是
id - int - identity
refN - smallint - the reference number
avail - bit - is number available (0 - is available, 1 - not available)这张桌子预先装满了refN's,它们都有效用= 0。如果效用为零,则可用参考编号。
如何编写SQL以选择下一个可用的引用号,并更新它(设置为1),而不必担心两个用户会得到相同的编号?
我可以简单地将SQL语句包装在BEGIN / COMMIT事务块中吗?
我肯定我想得太多了。
提前谢谢。
发布于 2022-09-13 09:15:37
我也会推荐一个序列,但是如果您确实需要使用存在的内容,那么下面的内容应该可以使用:
DECLARE @op TABLE (RefN smallint NOT NULL);
UPDATE RefNums
SET avail = 1
OUTPUT inserted.RefN
INTO @op
WHERE RefN =
(
SELECT MIN(RefN)
FROM RefNums WITH (UPDLOCK)
WHERE avail = 0
);
SELECT *
FROM @op;发布于 2022-09-13 07:02:53
https://stackoverflow.com/questions/73694308
复制相似问题