LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

经典asp执行新增插入的SQL后如何获取自增id ?

freeflydom
2026年5月7日 10:35 本文热度 67
:经典asp执行新增插入的SQL后如何获取自增id ?


在经典ASP中执行 INSERT 后获取自增 ID,最稳妥且推荐的方法是使用 SELECT SCOPE_IDENTITY()。这比使用 @@IDENTITY 更可靠,因为它只返回当前作用域生成的 ID,不受表上触发器的影响。根据你使用的数据库不同,具体实现方式略有区别。

🛠️ SQL Server (MSSQL)

对于 SQL Server,首推 SCOPE_IDENTITY() 函数。

vbscript
' 假设已有 conn 为有效的 ADODB.Connection 对象
' 执行插入语句
sqlInsert = "INSERT INTO users (username, email) VALUES ('张三', 'zhang@example.com')"
conn.Execute sqlInsert
' 立即执行 SELECT SCOPE_IDENTITY() 获取刚生成的 ID
sqlGetID = "SELECT SCOPE_IDENTITY()"
Set rs = conn.Execute(sqlGetID)
' 获取 ID 值
If Not rs.EOF Then
    newID = rs(0) ' rs(0) 即为新插入记录的 ID
    Response.Write "新插入的记录ID是:" & newID
End If
rs.Close
Set rs = Nothing

💡 核心原理:函数对比

SCOPE_IDENTITY()@@IDENTITY 和 IDENT_CURRENT 都返回标识值,但它们的作用范围不同,理解这点很重要

  • @@IDENTITY:返回当前会话中任何表最后生成的标识值。若表上存在触发器且触发了对其他表的插入,其返回值可能不是你预期的,因此不推荐

  • IDENT_CURRENT('表名'):返回指定表最后生成的标识值,不受会话和作用域限制。如果其他会话在你之后也插入了数据,返回值可能不是你刚插入的,因此也不推荐

  • SCOPE_IDENTITY():返回当前会话和当前作用域内最后生成的标识值,是获取刚插入记录 ID 最安全、准确的选择,也是官方推荐的方式

  • OUTPUT inserted.id:SQL Server 2005 及以上版本支持,可在 INSERT 语句中直接返回插入的 ID,更加直接

​OUTPUT inserted.id示例:

sql = "INSERT INTO users (username, email) OUTPUT inserted.id VALUES ('test', 'test@example.com')"  

Set rs = conn.Execute(sql)  

newID = rs("id")  


该文章在 2026/5/7 10:35:43 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-1  粤公网安备44030602007207号