sql 中插入一条记录。然后 马上就要取他的ID的方法是什么

nfnxg123456 2008-04-15 04:21:06
sql 中插入一条记录。然后 马上就要取他的ID的方法是什么。
怎样做才会更安全准确一点。
...全文
1422 63 打赏 收藏 转发到动态 举报
写回复
用AI写文章
63 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaazz 2008-04-16
  • 打赏
  • 举报
回复
收了
chenjunhui 2008-04-16
  • 打赏
  • 举报
回复
@@Identity
葡萄爸 2008-04-16
  • 打赏
  • 举报
回复
大家都很强~~

赞一个
clever_yang 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 baikunkuku 的回复:]
在对数据库关闭连接之前加上在SQL语句加上select @@identity执行一下,用ExecuteScalar()方法可以获取.
[/Quote]



呵呵,如果你的ID是自增的就可以这样
insert into tbltest(name,sex,age) values ("test","man","24"); select @@IDENTITY as id from tbltest
然后用ExecuteScalar()就OK了~,,很简单的,你可以试一下~
zhangxuyu1118 2008-04-16
  • 打赏
  • 举报
回复
select SCOPE_IDENTITY()
jrl5365 2008-04-16
  • 打赏
  • 举报
回复
select @@identity

这样不就可以了
dotnet_user 2008-04-16
  • 打赏
  • 举报
回复
这样是可以的,但是不是必须是:主键是identity生成的,如果主键不是这样生成的话,那就不能这样子了。
milizi820 2008-04-16
  • 打赏
  • 举报
回复
IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。


@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。


SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。(防止返回触发器中的insert的IDENTITY值)
zjysky 2008-04-16
  • 打赏
  • 举报
回复
@@identity 如果是自动增长的就使用这个

milizi820 2008-04-16
  • 打赏
  • 举报
回复
看了,讨论得很精彩
jxdyzwh 2008-04-16
  • 打赏
  • 举报
回复
用max
ndsc_cherry 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wangkun9999 的回复:]
存储过程:


SQL code
create procedure infoadd
@ID int output,
...
AS
insert into mytab(...) values (...)
SET @ID = @@IDENTITY
GO
[/Quote]
  • 打赏
  • 举报
回复
database类
public object ExecuteScalar(string strSql)
{
Open();
SqlCommand cmd = new SqlCommand(strSql,conn);
object mm=cmd.ExecuteScalar();
return mm;
}

cmdText = "insert into city_shop (shopname)values ("+google+"); shopid自动增长
调用
DataBase db = new DataBase();
int shopid = Convert.ToInt32(db.ExecuteScalar(cmdText).ToString());


这样ExecuteScalar同时实现插入并返回首行

本人觉得最好的办法

地下室小红叔 2008-04-16
  • 打赏
  • 举报
回复
select @newId=ident_current('table1')
shoushii 2008-04-16
  • 打赏
  • 举报
回复
select @indentity
一品梅 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 fcuandy 的回复:]
SCOPE_IDENTITY()

@@identity会受同会话中其它作用域的影响,因为它是全局的。比如触发器或者其它。
比如你ta表上建有触发器,触发器的内容是当ta有新记录时同时插一条记录到tb,
那么你用@@ideneity时,想取ta上最后的标值列,实际上得到的是tb的。
[/Quote]
学习了...
iloveppmm 2008-04-16
  • 打赏
  • 举报
回复
mark
snowman_521 2008-04-16
  • 打赏
  • 举报
回复
在Sql Server中如果是标志列的话可以用
select @@Identity
闲游四疯 2008-04-16
  • 打赏
  • 举报
回复
刚做到这边,就看到这个贴。。真好~
shinevi 2008-04-16
  • 打赏
  • 举报
回复
insert into table1 values(colvalue1,colvalue2)
select @@identity
加载更多回复(43)

62,046

社区成员

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

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

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

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