用select @@identity得到上一次插入记录时自动产生的ID
如果你使用存储过程的话,将非常简单,代码如下:SET @NewID=@@IDENTITY
说明:
在一条 INSERT、
SELECT INTO
或大容量复制语句完成后,@@IDENTITY中包含此语句产生的最后的标识值。若此语句没有影响任何有标识列的表,则 @@IDENTITY 返回NULL。若插入了多个行,则会产生多个标识值,@@IDENTITY返回最后产生的标识值。如果此语句激发一个或多个执行产生标识值的插入操作的触发器,则语句执行后立即调用 @@IDENTITY将返回由触发器产生的最后的标识值。若 INSERT 或 SELECT INTO 语句失败或大容量复制失败,或事务被回滚,则@@IDENTITY 值不会还原为以前的设置。
下面的示例向带有标识列的表中插入一行,并用 @@IDENTITY 显示在新行中使用的标识值。
SELECT @@IDENTITY AS 'Identity'
我的表infoclass中有个ID字段,它原的值是14插入新的记录后自动产生了值15,因些,上面命令执行后返回值:15。
"SELECT job_id FROM jobs WHERE job_id = @@IDENTITY"
Dim cmd As New SqlCommand(sql, cn)
Dim jobId As Integer = CInt(cmd.ExecuteScalar())A
2. insert into 后获得自动插入的id(select @@identity)
当运行完插入语句后,执行select
@@identity就可得到自动生成的id
如果是sql server 最好用select SCOPE_IDENTITY() as id
因为@@identity全局的
同类还有IDENT_CURRENT(‘table’)
IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。IDENT_CURRENT不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。
@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值
SCOPE_IDENTITY 和 @@IDENTITY返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。