我正在开发一个Windows应用程序,其中多个用户可以使用相同的数据库。
我的问题是在向数据库表插入新记录时,我需要在客户注册表单中显示新的customerID
。为此,我得到最后一个客户ID并递增1并显示新客户的客户ID。在多用户环境中,如果两个人同时尝试添加新客户,则显示新客户ID时会出现问题。当两个用户同时访问和更新同一条记录时。
怎么办?
答案 0 :(得分:2)
您可以将插入的值输出到表变量中,然后返回该值
e.g。
DECLARE @output TABLE
(Col1 VARCHAR(10));
INSERT targetTable
(Col1)
OUTPUT inserted.Col1
INTO @output
VALUES ('ACC1001')
SELECT Col1 FROM @output;
答案 1 :(得分:0)
不要获取最后一个客户ID并自动将其增加一个,因为您提到的原因并不安全。
在新记录的插入语句之后,只需选择插入的ID,并使用以下代码行将其显示在客户注册表单中:
SELECT SCOPE_IDENTITY()
或者检查这个等效语句的选择语句:
SELECT @RecordId= MAX([RecordId])
FROM [dbo].[CustomerTbl]