我正在使用 SQL Server 2008 开发 ASP.NET 项目 (C#)。
当我向数据库中的表中插入一行时,我想获取最后插入的 ID,即表的 IDENTITY(自动递增)。
我不想使用其他查询,而是做类似...
SELECT MAX(ID) FROM USERS;
因为 - 即使它只是一个查询 - 它感觉很差...
当我插入某些内容时,我通常使用 ExecuteNonQuery(),它会返回受影响的行数。
int y = Command.ExecuteNonQuery();
有没有办法在不使用其他查询的情况下返回最后插入的 ID?
最佳答案
大多数人通过以下方式做到这一点:
INSERT dbo.Users(Username)
VALUES('my new name');
SELECT NewID = SCOPE_IDENTITY();
(或者不是查询,而是将其分配给变量。)
所以这不是真正的两个查询针对表...
不过也有以下方式:
INSERT dbo.Users(Username)
OUTPUT inserted.ID
VALUES('my new name');
不过,您实际上无法使用 ExecuteNonQuery
检索它。
关于c# - 不使用第二个查询返回最后插入的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14299098/