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
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值