SQL插入语句插入自增的主键后,如何获取这个新增的主键值

这是我遇到的一个面试题,看了一些文章后, 总结如下

SQL Server中,需要返回你刚刚插入到一张表的identity(自增字段)的值, 有3个关键字,分别是

@@IDENTITY

SCOPE_IDENTITY

IDENT_CURRENT  

这3者之间有什么样的区别呢,我们来看看

IDENT_CURRENT => 它针对的是特定的表,所以它的使用方式为 IDENT_CURRENT('Table Name'), 比如Person这张表,它的使用方式就是IDENT_CURRENT('Person'), 它会取出最后一次插入Person表的自增的值.  

@@IDENTITY => 它返回当前会话中,所有作用域的任何表中,最后一个插入的自增标识值

SCOPE_IDENTITY => 它返回当前会话中,当前作用域中的任何表中,最后一个插入的自增标识值

我们来看看这两者的区别:  假如有2张关联表Person和Account, PersonId 和 AccountId分别是自增字段.

在Person表中定义了一个INSERT的触发器, 当在Person表中插入一行时,触发器被激发,同时需要在Account表中插入一行

这整个是1个会话,但上面涉及到了2个作用域: 第1个作用域是 在Person表中插入1行       第2个作用域是在Account表中插入1行

这样,上面2个返回的值就不一样了 

@@IDENTITY  => 返回当前会话,所有作用域中的任何表中,最后一个插入的自增标识值 => AccountId

SCOPEN_IDENTITY => 它返回当前会话中,当前作用域的任何表中,最后一个插入的自增标识值 => PersonId

 

posted on   新西兰程序员  阅读(1402)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2016-10-12 WebForm中如何防止页面刷新,后退导致的重复提交
2016-10-12 开发WebForm时遇到的问题
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示