多用户记录更新Windows应用程序使用SQL Server &c#

本文关键字:SQL Server 记录 更新 Windows 应用程序 多用户 | 更新日期: 2023-09-27 18:16:20

我正在开发一个windows应用程序,其中多个用户可以使用相同的数据库。

我的问题是当插入一个新的记录到数据库表,我需要在客户注册表中显示新的customerID。为此,我获取最后一个客户id并加1,并显示新客户的客户id。在多用户环境中,如果两个人同时尝试添加新客户,那么显示新客户id就会出现问题。当两个用户同时访问和更新同一条记录时。

该怎么办?

多用户记录更新Windows应用程序使用SQL Server &c#

您可以将插入的值输出到表变量中,然后返回该值

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]