SQL SERVER中的三种获得自增长ID的方法
这个功能比较常用,所以记下来以防自己忘掉。
SCOPE_IDENTITY
IDENT_CURRENT
返回为任何会话和任何作用域中的指定表最后生成的标识值。这个函数需要一个以表名为值的变量,也就是说虽然不受会话和作用域的限制,却会受到表的限制。
@@IDENTITY
SCOPE_IDENTITY
返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。
IDENT_CURRENT
返回为任何会话和任何作用域中的指定表最后生成的标识值。这个函数需要一个以表名为值的变量,也就是说虽然不受会话和作用域的限制,却会受到表的限制。
@@IDENTITY
返回最后插入的标识值。
体会:加上事物处理,两个函数一个变量没有本质区别。不加事物处理两个函数一个变量受到其他会话、作用域的影响不一样。
例子:
dim conn
dim connstr
dim db
db="xx.mdb"
Set conn=Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
conn.Open connstr
set rs=server.CreateObject("adodb.recordset")
sql="select * from admin"
rs.open sql,conn,1,3
rs.addnew
rs("username")="111455"
rs("password")="45464"
rs.update
temp = rs.bookmark
rs.bookmark = temp
Response.write rs.Fields("ID")
结果为2
此表中已存在一条记录了