使用 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.TestIdINTO @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 = @@IdentitySELECT @Id
此外,还有几个有趣的全局变量可以用来获取前一次执行的 `INSERT` 命令的 ID 值,如 `@@RowCount` 可以返回当前语句的受影响的记录行数。
以上就是使用 MSSQL 获取主键 ID 的几种技巧,在使用这些技巧前,请务必先了解每个技巧的使用范围,以及在什么场景使用特定技巧可能比其他技巧更好。