如何获取插入处最后一行的自动增量值

yac*_*uah 21 sql t-sql sql-server get

我已经用Google搜索了这个问题一周,没有任何用处,我认为我没有使用正确的单词

我正在使用带有t-sql的SQL Server 2008,我需要在插入新行时优化我的功能.

我有一个第一列的表是整数自动增量类型的关键,其他列只是供参考

当我们进行插入时,SQL Server会自动递增密钥,我必须执行select max来获取值,所以有没有像全局变量那样@@IDENTITY的函数或函数来避免开始结束事务并选择max

Mah*_*mal 37

用途SCOPE_IDENTITY:

-- do insert

SELECT SCOPE_IDENTITY();
Run Code Online (Sandbox Code Playgroud)

哪个会给你:

最后一个标识值插入同一范围内的标识列.范围是一个模块:存储过程,触发器,函数或批处理.因此,如果两个语句在同一存储过程,函数或批处理中,则它们在同一范围内.

  • @Applez00800不,它不会给出错误的ID,它会为每笔交易返回正确的ID。 (3认同)

Edd*_*wed 5

刚刚运行代码:

INSERT INTO Persons (FirstName) VALUES ('Joe');
SELECT ID AS LastID FROM Persons WHERE ID = @@Identity;
Run Code Online (Sandbox Code Playgroud)

它也有效!

  • 如果从另一个线程在这两个查询之间插入另一个插件,会发生什么? (8认同)