当执行一条sql语句时,同时能获得它的主键值吗?

rendehua380 2009-04-24 10:17:08
插入一条sql语句成功后能不能获得它的主键值,而不用在根据他的其他字段再查它的主键值。
...全文
214 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
rendehua380 2009-04-25
  • 打赏
  • 举报
回复
谢谢各位大侠!
zsuswy 2009-04-25
  • 打赏
  • 举报
回复
上面几位说的都有个条件,就是你的这个表的主键是Identity 自增长类型的,这样就可以用SELECT @@IDENTITY 来获取到刚才自增长的值。
但是如果你的主键不是自增长的,那么就必须你自己去表里查询了。
abcdef1111111 2009-04-25
  • 打赏
  • 举报
回复
晕,来晚了,帮顶!
ws_hgo 2009-04-25
  • 打赏
  • 举报
回复
SELECT @@IDENTITY 
aaajedll 2009-04-25
  • 打赏
  • 举报
回复
自動增長的樓上已經給出了答案
非自動增長的,程序必須要取到值才能做insert動作,所以在這里就根本不需要考慮了
yhf_vip 2009-04-25
  • 打赏
  • 举报
回复
select @@identity就可以获取自动增长值了
kfps8kfps8 2009-04-24
  • 打赏
  • 举报
回复
楼上的都说的很详细了
yangqidong 2009-04-24
  • 打赏
  • 举报
回复
string cmdText = "insert into Xx values(xxx);select scope_identity()";
SqlCommand cmd = new SqlCommand (cmdText,conn);
int key = Convert.ToInt32(cmd.ExecuteScalar()); //得到自动生成的主键值

yuanmanguo 2009-04-24
  • 打赏
  • 举报
回复
可以用 sqlserver 的SCOPE_IDENTITY( )

SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY 在功能上相似,因为它们都返回插入到 IDENTITY 列中的值。

IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。有关更多信息,请参见 IDENT_CURRENT。

SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。
Garnett_KG 2009-04-24
  • 打赏
  • 举报
回复
SQLSERVER :

插入一条sql语句成功后执行SELECT @@IDENTITY
smile_99 2009-04-24
  • 打赏
  • 举报
回复
可以的。

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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