SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY (插入后如何获取自增列的值)

IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。
IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值
SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。
但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。 
稍微解释一下吧

1  @@IDENTITY 返回的是在当前操作下影响到的自增长列的值,比如我插入A表后触发在B表中插入一条记录,
而且2表都有自增列,那么它将返回B表自增列的值
2  SCOPE_IDENTITY() 只返回我们操作的表的自增列的值
3  IDENT_CURRENT('表名')你想要获取哪个受影响的表的自增列都可以 
例子:
if object_id('TZ') is not null
   drop table TZ
if object_id('TY') is not null
   drop table TY
if object_id('Ztrig') is not null
   drop trigger TZ
go
CREATE TABLE TZ (
   Z_id  int IDENTITY(1,1)PRIMARY KEY,
   Z_name varchar(20) NOT NULL)
INSERT TZ
   VALUES ('Lisa')
INSERT TZ
   VALUES ('Mike')
INSERT TZ
   VALUES ('Carla')
go
CREATE TABLE TY (
   Y_id  int IDENTITY(100,1)PRIMARY KEY,
   Y_name varchar(20) NULL)
INSERT TY (Y_name)
   VALUES ('boathouse')
INSERT TY (Y_name)
   VALUES ('rocks')
INSERT TY (Y_name)
   VALUES ('elevator')
go
CREATE TRIGGER Ztrig
ON TZ
FOR INSERT 
AS 
   BEGIN
   INSERT TY VALUES ('aaa')
   END
go
INSERT TZ VALUES ('Rosalie')

select * from TZ
select * from TY
SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]
SELECT   @@IDENTITY AS [@@IDENTITY]
select IDENT_CURRENT('TZ') as [IDENT_CURRENT]
 
  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

JL99000

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值