在sql中返回插入的记录的id

作者:亮亮 来源:亮亮博客 时间:2008-12-21 15:54:00 

若数据库是sql server,我以前为了返回插入记录的id,一般是用下面的存储过程:

程序代码

create procedure backId2
@t_txt1_v nvarchar(50),
@id int output
as
insert into testTbl(t_txt1) values(@t_txt1_v)
select @id=@@IDENTITY
go

可有一次却出现了问题,返回的结果老不正确,于是查了一下资料,用下面的存储过程是最保险的:
 程序代码

create procedure backId1
@t_txt1_v nvarchar(50),
@id int output
as
insert into testTbl(t_txt1) values(@t_txt1_v)
select @id=SCOPE_IDENTITY()
go

为什么这么说呢?看查到的资料如下解释:

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

例如,有两个表 a1 和 a2,在 a1上定义了一个 Insert 触发器。当将某行插入  a1 时,触发器被激发,并在 a2 中插入一行。此例说明了两个作用域:一个是在 a1上的插入,另一个是作为触发器的结果在 a2上的插入,假设a1和a2 都有 IDENTITY 列。

@@IDENTITY 返回插入到当前会话中任何作用域内的最后一个 IDENTITY 列值,该值是插入a2中的值。

SCOPE_IDENTITY() 返回插入 a1 中的 IDENTITY 值,该值是发生在相同作用域中的最后一个 Insert。如果在作用域中发生插入语句到标识列之前唤醒调用 SCOPE_IDENTITY() 函数,则该函数将返回 NULL 值。

最后说说怎么调用存储过程吧!

 程序代码

connstr=""
set conn=server.CreateObject("adodb.connection")
conn.open connstr
set cmd=server.CreateObject("adodb.command")
cmd.activeconnection=conn
cmd.commandtype=4
cmd.commandtext="backId1"
cmd.parameters.item("@t_txt1_v").value="procedure test"
cmd.execute
'maxId就是返回的id
maxId=cmd.parameters.item("@id").value
set cmd=nothing
conn.close
set conn=nothing

 

标签:存储过程,id,sql,数据库
0
投稿

猜你喜欢

  • asp如何随机显示网站链接?

    2010-06-07 20:40:00
  • IA学习笔记04:标签系统

    2009-09-22 14:40:00
  • oracle下实现恢复一个丢失的数据文件的代码

    2009-03-02 11:02:00
  • javascript双击自动滚屏单击停止

    2008-10-13 13:05:00
  • 用ASP实现远程批量文件改名

    2007-09-12 12:23:00
  • Photoshop设计制作网站流程图解

    2007-10-25 12:06:00
  • asp如何在聊天室实现趣味答题并计分功能?

    2010-06-18 20:00:00
  • ASP 3.0中的新特性

    2008-02-27 13:28:00
  • MySQL出现1067错误如何解决?

    2008-09-03 12:25:00
  • 如何实现对整个站点所有页面的操作?

    2010-05-19 21:20:00
  • 如何提高Request集合的使用效率?

    2010-06-07 20:53:00
  • 存储过程优缺点分析

    2012-04-13 11:39:56
  • oracle学习笔记(二)

    2012-01-05 18:59:20
  • ASP伪静态页简单教程

    2007-09-28 14:35:00
  • 什么是XML?

    2007-10-29 12:53:00
  • 利用CSS属性实现进度条的方式

    2010-02-25 12:31:00
  • 一个简单的JS显示日期代码

    2009-02-10 12:34:00
  • SqlServer中的日期与时间函数

    2011-11-03 17:12:34
  • 用ASP显示ACCESS数据库的GIF图象

    2008-11-16 18:09:00
  • 2009年情人节网站logo欣赏

    2009-02-15 12:13:00
  • asp之家 网络编程 m.aspxhome.com