当前位置:   article > 正文

关于SQL三种获取自增长的ID方法_sql 获取自增id

sql 获取自增id

关于SQL三种获取自增长的ID方法

SQL SERVER中的三种获得自增长ID的方法
这个功能比较常用,所以记下来以防自己忘掉。

SCOPE_IDENTITY

返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。


IDENT_CURRENT
返回为任何会话和任何作用域中的指定表最后生成的标识值。这个函数需要一个以表名为值的变量,也就是说虽然不受会话和作用域的限制,却会受到表的限制。

@@IDENTITY

返回最后插入的标识值。

体会:加上事物处理,两个函数一个变量没有本质区别。不加事物处理两个函数一个变量受到其他会话、作用域的影响不一样。

 

一直以来都是使用@@identity来获得最后一个插入到表的记录的identity值,最近发现这种方法在某种情况是不可靠的,先来看看两个概念
作用域:在SQLSERVER作用域就是一个模块-存储过程,触发器,函数或批处理
会话:  一个用户连接产生的所有上下文信息(online book找不到会话的概念,参照会话上下文概念而写)

相同点:都是返回最后插入的标识值
不同点:
@@identity :返回当前会话最后一个标识值,不限于特定的作用域 ;
ident_current('tablename'):返回任何会话,任何作用域中的指定表中生成的最后一个标识值 ;
scope_identity :返回当前会话当前作用域任何表生成的最后一个标识值 。

 

摘自:http://www.ehrdoor.cn/club/?uid-96-action-viewspace-itemid-3139

 

  sql0="select @@identity as id"

  rs.addnew
  rs("u_user")=f_user
  rs("u_psw")=f_pwd
  rs.update
  rs.close
  rs.open sql0,conn,1,1
  identity=rs("id")

 

当在rs.close后加入set rs=nothing就不能获得@@identity的值。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/241247
推荐阅读
相关标签
  

闽ICP备14008679号