【杂记--3种返回最大标识值的方法的不同点】

-----------------------------------------------3种返回最大标识值的方法的不同点---------------------------------------  

--测试数据表

create table test1 (id int identity(1,1),value int)

create table test2 (id int identity(1,1),value int)

create table test3 (id int identity(1,1),value int)

go

--建立触发器

create trigger tr_t1 on test1 

after insert 

as

begin 

insert test2 values(1)

end

 

--1@@IDENTITY  返回为当前会话的所有作用域中的任何表最后生成的标识值。 

  insert test2 values(3)

  select @@IDENTITY 

  /*1*/

  go

  insert test1 values(1)

  select @@IDENTITY 

  /*2*/ 

  ----居然不是这是为什么呢?-----

  --因为它触发了test1上面的触发器这个时候它执行了向test2中插入一条记录,test2上就有第二条记录,标识列就为了------------

  truncate table test1

  truncate table test2

--2SCOPE_IDENTITY  返回为当前会话和当前作用域中的任何表最后生成的标识值。(防止返回触发器中的insertIDENTITY

     --------为了防止刚才的触发器引发的错误,我们利用SCOPE_IDENTITY函数---------

      insert test2 values(3)

  select SCOPE_IDENTITY() 

  /*1*/

  go

  insert test1 values(1)

  select SCOPE_IDENTITY() 

  /*1*/

  truncate table test1

  truncate table test2

--3IDENT_CURRENT  返回为任何会话和任何作用域中的特定表最后生成的标识值。

-----想任意的返回你想要的表的标识值,那么我们使用IDENT_CURRENT--------------

  insert test2 values(3)

  select IDENT_CURRENT('test2') 

  /*1*/

  go

  insert test1 values(1)

  select IDENT_CURRENT('test2') 

  /*2*/

  select IDENT_CURRENT('test1') 

  /*1*/ 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值