使用 MSSQL 获取主键 ID 的技巧(mssql 主键id获取)

在 MSSQL 数据库中,主键 ID 通常是新插入记录的唯一标识,在操作中获取主键 ID 尤其重要,本文将介绍使用 MSSQL 获取主键 ID 的几种技巧以及实现过程。

首先,实现 MSSQL 获取主键 ID 的第一种技巧就是使用 `SCOPE_IDENTITY` 关键字,该关键字在一个作用域刚执行完 `INSERT` 语句时返回插入唯一标识。下面是一个示例:

CREATE TABLE [Test] (
TestId INT IDENTITY(1,1) PRIMARY KEY,
Name NVARCHAR(50),
DateCreated DATETIME DEFAULT GETDATE()
)
GO

DECLARE @Id INT

INSERT INTO [Test] (Name)
VALUES ('John Doe')
SET @Id = SCOPE_IDENTITY()
GO
SELECT @Id

上面代码中 `TestId` 是刚刚插入数据库中唯一标识,它最终会存储到 `@Id` 变量中,最后 `SELECT @Id` 语句将显示刚刚插入的数据的主键 ID。

第二种技巧就是使用 `OUTPUT` 关键字,该关键字可以用于创建变量,并且存储刚刚插入数据的唯一标识,可以看出它和 `SCOPE_IDENTITY` 关键字有着异曲同工之妙:

DECLARE  @Id INT 

INSERT INTO [Test] (Name)
OUTPUT Inserted.TestId
INTO @Id
VALUES ('John Doe')
GO
SELECT @Id

如果有多条记录要插入,将通过 `OUTPUT` 关键字也可以实现,首先创建一个表来存储这些 Id,然后在 `INSERT` 语句中使用 `OUTPUT` 关键字获取它们:

CREATE TABLE InserIds (Id INT)
INSERT INTO [Test] (Name)
OUTPUT Inserted.TestId INTO InserIds
VALUES ('John Doe')
SELECT Id FROM InserIds

第三种技巧则是使用 ` @@Identity` 全局变量。它可以在任何语句块中访问,将在 `INSERT` 语句执行完毕后返回自增长字段的值:

DECLARE  @Id INT 

INSERT INTO [Test] (Name)
VALUES ('John Doe')

SET @Id = @@Identity
SELECT @Id

此外,还有几个有趣的全局变量可以用来获取前一次执行的 `INSERT` 命令的 ID 值,如 `@@RowCount` 可以返回当前语句的受影响的记录行数。

以上就是使用 MSSQL 获取主键 ID 的几种技巧,在使用这些技巧前,请务必先了解每个技巧的使用范围,以及在什么场景使用特定技巧可能比其他技巧更好。


数据运维技术 » 使用 MSSQL 获取主键 ID 的技巧(mssql 主键id获取)