Sql 如何获取上次插入的标识值

Sql 如何获取上次插入的标识值,sql,sql-server,Sql,Sql Server,我需要选择最后插入的行标识值,所以我尝试了下面的代码 select SCOPE_IDENTITY() from tb_new_product_Name_id 但是它没有显示出来。我在哪里出错?在MS SQL Server中有三个类似的概念-@@IDETITy、SCOPE_IDENTITY()和IDENT_CURRENT() 以下是示例代码: CREATE TABLE TestData ( id INT IDENTITY(1,1) PRIMARY KEY, name VARCHAR(25) NO

我需要选择最后插入的行标识值,所以我尝试了下面的代码

select SCOPE_IDENTITY() from tb_new_product_Name_id

但是它没有显示出来。我在哪里出错?

在MS SQL Server中有三个类似的概念-@@IDETITy、SCOPE_IDENTITY()和IDENT_CURRENT()

以下是示例代码:

CREATE TABLE TestData (
id INT IDENTITY(1,1) PRIMARY KEY,
name VARCHAR(25) NOT NULL)
INSERT TestData VALUES('one'), ('two')


CREATE TABLE TrigData (
id INT IDENTITY(100,5) PRIMARY KEY,
name VARCHAR(20) NULL)
INSERT TrigData(name)
VALUES('one'), ('two'), ('three')

CREATE TRIGGER Ztrig
ON TestData
FOR INSERT AS
BEGIN
INSERT TrigData VALUES('from trig')
END

INSERT TestData VALUES('dummy')

SELECT @@IDENTITY AS [@@IDENTITY]
GO
SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]
GO
SELECT IDENT_CURRENT('TestData') [IDENT_CURRENT]
它返回115、3和3。
希望对您有所帮助。

您不需要在此处指定表名。。 SCOPE_IDENTITY()只是一个返回当前作用域中最近生成的标识值的函数。

试试这个

/* Variable */
DECLARE @NewDocumentID int;
/* Insert record statement here. In my case table name is document.*/
INSERT INTO document (name) VALUES ('TEMP');
SELECT @NewDocumentID = SCOPE_IDENTITY();
PRINT @NewDocumentID