dataset 更新插入行,自动递增主键,如何获取更新到数据库后那行的主键?

时间:2022-05-20 13:52:41
我用 dataset 连接 SqlServer数据库,我做的表主键id是自动递增的类型,所以在dataset里新增的行的主键id是1、2。。。,等到更新到数据库里才会变成正确值。我的问题是,当我更新了dataset里某一行到数据库里后,怎么立即获取这一行在数据库里的id?

8 个解决方案

#1


确定更新到数据库,执行 
select max(id) from table;

#2


我现在是再重新刷一遍数据到dataset,有没有使用数据适配器自动更新的方法呢?

#3


select @@identity
dataset 更新插入行,自动递增主键,如何获取更新到数据库后那行的主键?这是百度得到的东西哦

#4



insert into......
SELECT cast(@@IDENTITY as int) AS '{0}'

这里注意最好两句话连在一起同时执行。
还有就是如果是高并发的插入操作,这里查出来的数据也不准,最好少用自增列,特别是你的这个自增列还要作为其他表的关联键的时候,最好自己定义生成规则,或者偷懒就使用Guid做主键吧,就不存在这个问题了。

#5


如果你需要使用不是特别低级的数据查询功能(比如多表关联查询,内关联,嵌套,存储过程)
那么你就应该放弃dataset直接绑定数据库的方式,学会使用代码去操作数据库

#6


系统提供的@@IDENTITY  系统变量就是插入的最新的id
 
跟着你的sql语句带出来就行了

#7


本人刚学数据库,真的很菜,我就想如果利用update更新数据库后,adapter能够自动刷新dataset就好了,就不用费神写查询语言了(其实不会!)

#8


https://msdn.microsoft.com/zh-cn/library/ks9f57t0.aspx

#1


确定更新到数据库,执行 
select max(id) from table;

#2


我现在是再重新刷一遍数据到dataset,有没有使用数据适配器自动更新的方法呢?

#3


select @@identity
dataset 更新插入行,自动递增主键,如何获取更新到数据库后那行的主键?这是百度得到的东西哦

#4



insert into......
SELECT cast(@@IDENTITY as int) AS '{0}'

这里注意最好两句话连在一起同时执行。
还有就是如果是高并发的插入操作,这里查出来的数据也不准,最好少用自增列,特别是你的这个自增列还要作为其他表的关联键的时候,最好自己定义生成规则,或者偷懒就使用Guid做主键吧,就不存在这个问题了。

#5


如果你需要使用不是特别低级的数据查询功能(比如多表关联查询,内关联,嵌套,存储过程)
那么你就应该放弃dataset直接绑定数据库的方式,学会使用代码去操作数据库

#6


系统提供的@@IDENTITY  系统变量就是插入的最新的id
 
跟着你的sql语句带出来就行了

#7


本人刚学数据库,真的很菜,我就想如果利用update更新数据库后,adapter能够自动刷新dataset就好了,就不用费神写查询语言了(其实不会!)

#8


https://msdn.microsoft.com/zh-cn/library/ks9f57t0.aspx