加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

获取新的SQL记录ID

发布时间:2020-12-12 08:42:24 所属栏目:MsSql教程 来源:网络整理
导读:如何获取自动生成的ID,以便我刚插入的新记录? (使用ASP经典和MSSQL 2005) 解决方法 SELECT SCOPE_IDENTITY() 使用@@ IDENTITY可能会有意想不到的结果,所以要小心如何使用它.将记录插入其他表的触发器将导致@@ IDENTITY值发生变化,其中,SCOPE_IDENTITY()将仅
如何获取自动生成的ID,以便我刚插入的新记录?
(使用ASP经典和MSSQL 2005)

解决方法

SELECT SCOPE_IDENTITY()

使用@@ IDENTITY可能会有意想不到的结果,所以要小心如何使用它.将记录插入其他表的触发器将导致@@ IDENTITY值发生变化,其中,SCOPE_IDENTITY()将仅从当前作用域提供最后一个身份.

以下是一个示例,它将显示@@ IDENTITY和SCOPE_INSERT()之间的区别,以及如何返回不同的值.

use tempdb
go
create table table1
    (ID int identity)
go
create table table2
    (ID int identity(100,1))
go
create trigger temptrig 
    on table1 
    for insert
as
begin

    insert  table2 
     default values;

end
go
insert  table1 
default values;
select  SCOPE_IDENTITY(),@@IDENTITY

没有人在这里讨论的另一个选择是使用SQL 2005中的OUTPUT子句.在这种情况下,您只需要将输入子句添加到插入,然后从代码中捕获该记录集.当插入多个记录而不是只有1个时,这很好

use tempdb
go
create table table1
    (ID int identity)
go
insert   table1 
output   inserted.ID
default values;
--OR...
insert   table1 
output   inserted.$identity
default values;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读