如何准确高效的获取数据库新插入数据的主键id

Posted youguess

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何准确高效的获取数据库新插入数据的主键id相关的知识,希望对你有一定的参考价值。

例如我们新建了一张表UserInformation,字段如下Id,为主键,自增,其它字段Name,Pwd,Email

然后我们来执行一个新增插入操作:

insert into UserInformation
(Name,Pwd,Email) values(‘小明‘,‘123‘,‘111‘)

我们想在新增插入数据的时候获取到插入这条数据的主键的值是多少

 

解决的方法有两种:

1、一种是直接输入某个字段,然后查询,代码如下:

insert into UserInformation
(Name,Pwd,Email) values(‘小张‘,‘123‘,‘111‘) 
select @@identity

插入后获取,但是这种并不是完全准确的

insert into[Test1].[dbo].[UserInformation]
(Name,Pwd,Email) values(‘小张‘,‘123‘,‘111‘) 
select @@identity

涉及到数据库锁,如果调整了数据库锁,当数量级别特别大,有大量数据并发插入的时候可能会有误差。

2、另一种方法是在插入的同时进行输出,代码如下:

insert into UserInformation
(Name,Pwd,Email) output inserted.Id values(‘小明‘,‘123‘,‘111‘)

除了主键,也可以输出别的字段,准确高效。

推荐使用第二种

 

  insert into [DB_Date_Plan].[dbo].[T_userInfo]
(userName,userPassword,userEmail) output inserted.Id,inserted.userName values(小明22,12322,11122)

update [DB_Date_Plan].[dbo].[T_userInfo] set userName=XXX OUTPUT Inserted.id WHERE userPassword=admin

 

 

摘自:https://www.cnblogs.com/zhangchengye/p/5148545.html







以上是关于如何准确高效的获取数据库新插入数据的主键id的主要内容,如果未能解决你的问题,请参考以下文章

mybatis如何获取oracle新插入数据记录的主键?

mybatis如何获取oracle新插入数据记录的主键?

如果我的主键不自动递增,如何使用 PHP 获取最后插入的 ID

Python操作MySQL获取插入数据的主键id

支付宝小程序serverless---插入数据后获取数据的主键_id(mongodb)

mysql主键生成策略 自动增长