scope_identity和identity的区别

本文探讨了SQL Server中scope_identity与@@identity的区别。@@identity返回当前会话中任一表内的最后生成的标识值,而scope_identity仅返回当前作用域内最后一次插入的标识值。文章还介绍了两者在不同场景下的应用,如触发器示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

scope_identity 和 @@identity 返回在当前会话中的任何表内所生成的最后一个标识值。
但是,scope_identity只返回插入到当前作用域中的值;
@@identity 不受限于特定的作用域。
示例:
有两个表 1 和 2,并且在 1 上定义了 insert 触发器。当将某行插入 1 时,触发器被激发,并在 2 中插入一行。
该方案演示了两个作用域:在 1 上的插入,以及在 2 通过触发器的插入。
假设 1 和 2 都有标识列,
@@identity 和 scope_identity 将在 T1 上的 insert 语句的最后返回不同的值。
@@identity 将返回在当前会话中的任何作用域内插入的最后一个标识列的值。这是在 T2 中插入的值。
scope_identity() 将返回在 T1 中插入的 identity值。这是在同一个作用域内发生的最后的插入。
如果在任何insert语句作用于作用域中的标识列之前调用 scope_identity() 函数,则该函数将返回空值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值