SQL Server IDENTITY() 函数使用指南
在 SQL Server 中,@@IDENTITY
是一个系统变量,用于返回最近插入的行的标识列值。它是在执行插入操作之后返回的,并且仅返回当前会话的标识列值。如果多个行被插入,只有最后插入行的标识列值被返回。
语法
@@IDENTITY
的语法非常简单,只需要在 SQL 查询中使用它即可。如下所示:
SELECT @@IDENTITY;
使用场景
@@IDENTITY
可以在许多不同的场景中使用。以下是一些常见的使用场景:
- 在插入数据后需要获取标识列值时,可以使用
@@IDENTITY
。 - 如果使用存储过程执行插入操作并需要返回标识列值,则可以将该值存储在一个输出参数中。
示例
以下是两个使用 @@IDENTITY
的示例:
示例 1:获取最近插入行的标识列值
假设我们有一个名为 Employees
的表格,其中包含以下列:
EmployeeID
- 标识列FirstName
- 名字LastName
- 姓氏Title
- 职称
我们可以使用以下查询向该表格中插入新行,并使用 @@IDENTITY
返回最近插入行的标识列值:
INSERT INTO Employees (FirstName, LastName, Title)
VALUES ('John', 'Doe', 'Manager');
SELECT @@IDENTITY;
运行以上查询后,@@IDENTITY
将返回新行的 EmployeeID
值。
示例 2:使用存储过程获取标识列值
假设我们有一个存储过程,用于向 Employees
表格中插入新行,并需要返回新行的标识列值。我们可以将该值存储在一个输出参数中,如下所示:
CREATE PROCEDURE InsertEmployee
@FirstName nvarchar(50),
@LastName nvarchar(50),
@Title nvarchar(50),
@EmployeeID int OUTPUT
AS
BEGIN
INSERT INTO Employees (FirstName, LastName, Title)
VALUES (@FirstName, @LastName, @Title);
SET @EmployeeID = @@IDENTITY;
END;
然后,我们可以使用以下查询调用该存储过程,并检查输出参数以获取新行的标识列值:
DECLARE @NewEmployeeID int;
EXEC InsertEmployee 'Jane', 'Doe', 'Salesperson', @NewEmployeeID OUTPUT;
SELECT @NewEmployeeID;
运行以上查询后,@NewEmployeeID
将包含新行的 EmployeeID
值。
结论
在 SQL Server 中,@@IDENTITY
可以帮助我们获取最近插入行的标识列值,从而方便地进行后续操作。但是,需要注意的是,它只返回当前会话的标识列值,并且只返回最后插入行的标识列值。