如何获取数据库新插入数据的主键id

如何获取数据库新插入数据的主键id,第1张

例如我们新建了一张表T_User,字段如下u_id,主键,为标示符,user_name......然后我们来执行一个新增插入 *** 作:

     insert into T_User(user_name,user_password,user_email,user_ip)

     values('admin','123456','32962435@qq.com','58.20.158.20')  

     有一天,我们想在新增插入数据的时候获取到插入这条数据的u_id的值是多少,我们知道从MSSQL2005以后新增了一个output,用来输入某个值,我们就可以利用它来实现

解决的方法有两种:

1、一种是直接输入某个字段,如:

insert into T_User(user_name,user_password,user_email,user_ip)  output inserted.u_id   //output

inserted.u_id一定要放在 values之前,不能放在sql语句的最后面,不然是出错的,inserted是固定的,你想输入当前插入的某个字段就在后面接这个字段即可,我们想获得的是u_id所以是inserted.u_id

values('admin','123456','32962435@qq.com','58.20.158.20')  

2、另一种方法是使用@@identity,@@identity是系统内置的一个全局变量,其作用就是输入最后一次的标示符,我们可以两步走也可以通过一步实现

一步实现的代码如下

   insert into T_User(user_name,user_password,user_email,user_ip)  output @@identity

values('admin','123456','32962435@qq.com','58.20.158.20')  

直接获取是有难度的,但是可以间接获取,比如先建一张表用来存储这一批数据的批次ID

DECLARE @BATCHID INT

CREATE TABLE TBL_BATCH

(

    ID int identity(1,1),

    [DESC] varchar(255)

)

--要进行批量插入时,先插入一条数据到TBL_BATCH表中

INSERT INTO TBL_BATCH VALUES '这批数据的作用:XXX'

--获取批次ID

SET @BATCHID = @@IDENTITY

--批量插入数据时将@BATCHID一同插入。注:需要先添加一列BATCHID列。

INSERT INTO XXX

SELECT @BATCHID,XXX,XXX,XXX UNION

SELECT @BATCHID,XXX,XXX,XXX

这样根据@BATCHID就可以查到这批数据的所有自增ID了


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9622270.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存