SQL Server SCOPE_IDENTITY() 函数使用指南
在 SQL Server 中, SCOPE_IDENTITY()
函数用于返回最近插入到当前范围内的标识列的值。它只适用于插入数据时使用标识列的情况。 SCOPE_IDENTITY()
函数返回一个具有数值数据类型的单个值。如果没有在当前范围内插入任何行,则返回 null。
语法
以下是 SCOPE_IDENTITY()
函数的语法:
SCOPE_IDENTITY ( )
使用场景
在一个 SQL 语句中,如果需要获取刚刚插入的自增长字段的值,可以使用 SCOPE_IDENTITY()
函数。与 IDENT_CURRENT() 函数不同, SCOPE_IDENTITY()
函数仅返回当前作用域内最新插入数据的自增长字段的值,而不是特定表的当前值。
使用 SCOPE_IDENTITY()
函数可以确保返回正确的标识列值,即使在高并发情况下也能保持准确性。
示例
假设我们有一个包含自增长字段的 Customers 表,我们需要插入一行数据并返回最新插入数据的自增长字段的值。以下是示例:
CREATE TABLE Customers (
id INT IDENTITY(1,1) PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(50)
);
INSERT INTO Customers (name, email)
VALUES ('John', '[email protected]');
SELECT `SCOPE_IDENTITY()` AS LatestId;
结果:
LatestId |
---|
1 |
假设有两个用户同时执行插入数据的操作,以下是示例:
用户 1 执行以下操作:
INSERT INTO Customers (name, email)
VALUES ('Amy', '[email protected]');
用户 2 执行以下操作:
INSERT INTO Customers (name, email)
VALUES ('Bob', '[email protected]');
此时,如果用户 1 使用 SCOPE_IDENTITY()
函数获取最新插入数据的自增长字段的值,得到的是自己插入的数据的自增长字段的值;如果用户 2 使用 SCOPE_IDENTITY()
函数获取最新插入数据的自增长字段的值,也得到的是自己插入的数据的自增长字段的值。
结论
在 SQL Server 中, SCOPE_IDENTITY()
函数用于返回最近插入到当前范围内的标识列的值。它只适用于插入数据时使用标识列的情况。使用 SCOPE_IDENTITY()
函数可以确保返回正确的标识列值,即使在高并发情况下也能保持准确性。