如何返回最后插入到sql中的自动增长标识值

SmilingKevin 2010-11-07 01:43:37
我在c#程序中向数据库中插入了一条数据,该表的主键是自动增长的,现在要如何去获取刚刚插入的这条数据的主键值呢?
...全文
187 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
清山博客 2010-11-07
  • 打赏
  • 举报
回复
Scope_identity
实例:
http://www.cnblogs.com/yank/archive/2008/04/16/1156713.html
select SCOPE_IDENTITY()
返回上面操作的数据表最后row的IDENTITY 列的值;
返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。
SELECT @@IDENTITY
返回上面操作最后一个数据表的最后row的IDENTITY 列的值;
创建表:
create table T_User(F_ID int identity(1,1) not null,F_Name varchar(20) not null)
插入数据:
insert into T_User(F_Name) values('我是谁') Select SCOPE_IDENTITY()
存储过程:
CREATE PROCEDURE [dbo].[sp_User](@F_Name int) AS
begin tran Insertinto_T_User
Insert into dbo.T_User(F_Name) values(@F_Name)
Select SCOPE_IDENTITY()
xrongzhen 2010-11-07
  • 打赏
  • 举报
回复
用事务 begin transaction insert... select max(id) from tb commit transaction
  • 打赏
  • 举报
回复
不管你得到什么结果,给你一个建议,认真测试一下当插入一条记录的操作会带来附加的触发器、存储过程代码被执行,其中有其它语句插入数据,那么那种结果还正确吗?
buer 2010-11-07
  • 打赏
  • 举报
回复
Sql块操作


string sql="insert table(f1,f2) values(v1,va2) "

sql+=" select @@identity ";
SmilingKevin 2010-11-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kankanwenzi 的回复:]
呵呵,我刚刚转了个贴,欢迎去看http://blog.csdn.net/kankanwenzi/archive/2010/11/07/5993215.aspx
[/Quote]

SQL SERVER要怎么做呢
bbb332 2010-11-07
  • 打赏
  • 举报
回复
用select语句查出来不可以吗?
kankanwenzi 2010-11-07
  • 打赏
  • 举报
回复
呵呵,我刚刚转了个贴,欢迎去看http://blog.csdn.net/kankanwenzi/archive/2010/11/07/5993215.aspx
phil999 2010-11-07
  • 打赏
  • 举报
回复
如果是 sql server,那么在同一个事务中执行 select @@identity

这样的低层的操作代码不好看,如果你用 entity framework 或者 nhibernate,那么保存之后,对象的状态自动被更新,你可以通过对象属性得到这个值

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧