SQL Server的一张表中如何管理多个用户同时进入records.net的序列号?
现在对于单用户,我阅读了最后一个序列号并显示它的文本框。它正在工作。如果 2 个用户同时插入一条记录,则会出现序列号重复错误。有什么解决办法?
SQL Server的一张表中如何管理多个用户同时进入records.net的序列号?
现在对于单用户,我阅读了最后一个序列号并显示它的文本框。它正在工作。如果 2 个用户同时插入一条记录,则会出现序列号重复错误。有什么解决办法?
您可以使用身份列。或者,如果您需要在写入数据库之前显示或使用 id,另一种技术是使用我所见过的称为“源表”的方法(尽管谷歌搜索该术语并没有找到任何结果)。本质上,您创建了一个存储过程,该过程访问一个包含当前 ID 的表中的一行;SP 在事务中检索并增加 id。这样每个 id 都是唯一的。在下面的示例 SQL 中,@whichid 用于定义我们要为哪个表请求新的 id;@n 是新的 id。
create PROCEDURE [dbo].[spGetUniqueID]
@n int OUTPUT,@whichid int
AS
BEGIN TRAN
SELECT @n = val FROM fount WHERE fountkey = @whichid
UPDATE fount SET val = @n + 1 WHERE fountkey = @whichid
COMMIT TRAN
RETURN