在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
投稿

猜你喜欢

  • python flask安装和命令详解

    2022-07-25 10:42:10
  • ASP利用 xmlhttp 分块上传文件

    2007-11-01 22:55:00
  • python 实现调用子文件下的模块方法

    2022-02-02 16:39:38
  • python plotly画柱状图代码实例

    2023-11-29 13:41:31
  • MySql多表链接查询详细教程

    2024-01-16 06:03:33
  • Python绘图之turtle库的基础语法使用

    2023-04-09 18:39:16
  • MySQL索引背后的之使用策略及优化(高性能索引策略)

    2024-01-23 04:21:19
  • CSS背景 background 图像属性解读

    2008-08-01 18:19:00
  • Python脚本实现网卡流量监控

    2022-11-27 11:36:51
  • JavaScript 映射器 array.flatMap()

    2024-05-22 10:40:10
  • python Spyder界面无法打开的解决方法

    2023-03-02 09:12:09
  • pytest用yaml文件编写测试用例流程详解

    2022-04-19 03:55:29
  • ASP基础教程之学习ASP中子程序的应用

    2008-10-16 10:53:00
  • expdp 中ORA-39002、ORA-39070错误详解及解决办法

    2024-01-19 16:37:47
  • Python中函数参数调用方式分析

    2022-09-14 04:54:07
  • 利用Django模版生成树状结构实例代码

    2023-11-10 16:41:11
  • Python虚拟环境venv用法详解

    2023-10-26 12:37:12
  • python爬取王者荣耀全皮肤的简单实现代码

    2021-03-14 16:36:43
  • javascript实现简单的二级联动

    2024-04-19 09:49:15
  • python实现简单俄罗斯方块

    2022-10-21 07:37:27
  • asp之家 网络编程 m.aspxhome.com