如何获取最后插入的标识值

时间:2014-02-25 06:47:56

标签: sql sql-server

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

select SCOPE_IDENTITY() from tb_new_product_Name_id

但它没有显示。我犯了错误?

3 个答案:

答案 0 :(得分:1)

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。 希望它可以帮到你。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

试试这个。

/* 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