LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

[点晴永久免费OA]SQL Server-INSERT后返回自增长ID值

admin
2023年6月27日 16:0 本文热度 1296

我需要在insert声明后得到一个自增长ID值,示例:我有一个包含属性name和id的表,id是自增长生成的值,要如何处理?

    insert INTO table (name) VALUES('bob');


初初一看,貌似可以用下面这两种方法:

select MAX(id) from table;

select top 1 id from table order by id desc;

但细细思量,这两种方法都有问题,如果此表存在着大量并发操作时,用这个方法拿到的ID大概率不是刚刚insert生成的ID,所以上面这个方法是不保险的,只能用于单个人操作时,多人操作的话,要用其他办法。有多种方法可以在插入命令后获取最后插入的 ID:

@@IDENTITY:它返回在当前会话中的连接上生成的最后一个标识值,而不管表和产生该值的语句的范围
SCOPE_IDENTITY():返回当前连接中当前作用域中insert语句生成的最后一个标识值,不考虑表。
IDENT_CURRENT(‘TABLENAME’):无论任何连接、会话或范围如何,它都会返回在指定表上生成的最后一个标识值。IDENT_CURRENT 不受范围和会话的限制;它仅限于指定的表。

现在似乎更难决定哪一个将完全符合我的要求,我最喜欢 SCOPE_IDENTITY(),使用 SCOPE_IDENTITY() 获取新的ID值方法如下:

insert INTO table (name) VALUES('bob');
select SCOPE_IDENTITY();

如果您在插入语句中使用 select SCOPE_IDENTITY() 和 TableName,您将获得符合您期望的确切结果。

特别注意:

如果获取的结果是null,说明此表没有自增长主键字段,上述功能生效的必要条件是表要有唯一自增长主键字段


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