-
您的位置:首页 → 精文荟萃 → 软件资讯 → 使用@IDENTITY
使用@IDENTITY
时间:2004/10/7 19:05:00来源:本站整理作者:蓝点我要评论(0)
-
基本知识
1. IDENTITY 列不能由用户直接更新,它是由系统自动维护的。
2.该列数据类型必须为数值型:int, smallint, tinyint, decimal or numeric with scale 0。
3.该列不能为 null。
4.不能在该列上设置缺省值。
5.递增量只能为整形(比如:1,2,-3)。不能为小数,也不能为0。
6.基值(种子值 seed)可以由用户设置,缺省值为1。
理解 @@IDENTITY
@@IDENTITY 返回最后一个插入 IDENTITY 的值,这些操作包括:INSERT, SELECT INTO,或者 bulk copy。如果在给没有 IDENTITY 列的其他表插入记录,系统将其置为 null。如果有多行记录插入到 IDENTITY 表中,@@IDENTITY 表示最后一个产生的值。如果触发了某个触发器,并且这个触发器执行向另一个带有 IDENTITY 列的表的插入操作,@@IDENTITY 将返回这个由触发器产生的值。如果这个触发器插入的表中不包含 IDENTITY 列,那么 @@IDENTITY 将为 null。如果插入操作失败,@@IDENTITY 值依然会增加,所以 IDENTITY 不保证数据的连续性。
@@IDENTITY 是当前连接的全局变量,只对当前连接有效。也就是说,如果断开连接再重新连接后,@@IDENTITY 为 null。以 ADO 来说,@@IDENTITY 在 Connection 对象打开和关闭期间是有意义的,即在 Connection 对象的存在范围内有效。在 MTS 组件中,从打开连接到显式的关闭连接(Connection.Close)或者到调用了 SetAbort,SetComplete之前,在这期间,@@IDENTITY 有意义。
使用 Truncate table 语句会使 IDENTITY 列重新开始计算。
得到 @@IDENTITY 的值
有三种方法(以下代码均使用 VBScript)
方法一:
Dim Conn, strSQL, Rs
Set Conn = CreateObject("ADODB.Connection")
' Open a connection to the database
Conn.Open("DSN=myDSN;UID=myUID;PWD=myPWD;")
' Insert a new record into the table
strSQL = "INSERT INTO mtTable (columnName) VALUES ('something')"
' Execute the SQL statement
Conn.Execute(strSQL)
' Get the @@IDENTITY.
strSQL = "SELECT @@IDENTITY AS NewID"
Set Rs = Conn.Execute(lsSQL)
NewID = Rs.Fields("NewID").value
' Close the connection
Conn.Close()
Set Conn = Nothing
方法二(仅限于 ADO 2.0 以上):
Dim Conn, strSQL, Rs
Set Conn = CreateObject("ADODB.Connection")
' Open a connection to the database
Conn.Open("DSN=myDSN;UID=myUID;PWD=myPWD;")
' Insert a new record into the table
lsSQL = "INSERT INTO myTable (columnName) VALUES ('something');" &_
"SELECT @@IDENTITY AS NewID;"
' Execute the SQL statement
Set Rs = Conn.Execute(lsSQL)
' Get the second resultset into a RecordSet object
Set Rs = Rs.NextRecordSet()
' Get the inserted ID
NewID = Rs.Fields("NewID").value
' Close the connection
Conn.Close()
Set Conn = Nothing
方法三:
Dim Conn, strSQL, Rs
Set Conn = CreateObject("ADODB.Connection")
' Open a connection to the database
Conn.Open("DSN=myDSN;UID=myUID;PWD=myPWD;")
' Insert a new record into the table
strSQL = "SET NOCOUNT ON;" &_
"INSERT INTO myTable (columnName) VALUES ('something');" &_
"SELECT @@IDENTITY AS NewID;"
' Execute the SQL statement
Set Rs = Conn.Execute(lsSQL)
' Get the inserted ID
NewID = Rs.Fields("NewID").value
' Close the connection
Conn.Close()
Set Conn = Nothing
相关阅读
Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
-
热门文章
360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3
最新文章
微信3.6.0测试版更新了微信支付漏洞会造成哪
360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗
人气排行
xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本
查看所有0条评论>>