如何避免多个用户在SQL Server中增加数字字段时出错

我正在使用SQL Server Express 2016和Excel VBA为一堆不同的Excel文档生成唯一的批号。 目前,我正在创build一个新行,然后SQL Server中的脚本会增加批号。 然后,我运行一个select语句,从刚刚创build的行中获取该字段。 到目前为止,我还没有任何问题,但是,我担心,如果excel文件是由不同的用户同时触发,一个用户的select查询可能会抓住另一个用户创build的行。 这是一个问题吗? 如果是这样,我该如何避免呢?

statement = "INSERT INTO LotInfo(RefNum,DateCreated,UserName)VALUES('" & RefNum & "','" & DateCreated & "','" & user & "')" conn.Execute statement Set lot = conn.Execute("SELECT top 1 Lot FROM LotInfo Order By ID desc;") 

我不相信范围标识将起作用。 这些陈述是完全分开的。 首先你做插入。 那结束了。 然后你发送select。 虽然我不是100%熟悉VBA,但我不确定第二个select是否知道第一个发票的结果。 我build议你创build一个你可以从VBA调用的存储过程。 该过程将执行插入,然后返回批号。