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