首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多用户更新

多用户更新
EN

Stack Overflow用户
提问于 2022-09-12 19:22:18
回答 2查看 30关注 0票数 0

我们有一个表格,其中有文档的参考编号。这个表的简化版本,称为RefNum,是

代码语言:javascript
复制
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事务块中吗?

我肯定我想得太多了。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-13 09:15:37

我也会推荐一个序列,但是如果您确实需要使用存在的内容,那么下面的内容应该可以使用:

代码语言:javascript
复制
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;
票数 0
EN

Stack Overflow用户

发布于 2022-09-13 07:02:53

参考编号的使用顺序&更新的用户序列

查看下面的URL

链接:https://www.c-sharpcorner.com/blogs/create-sequence-in-sql

序列每次生成唯一的数字

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73694308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档