对两个表插入数据的时候,写第二个表时怎么样得到写入的第一个表产生的ID?

gyhongjun 2004-09-07 08:38:09
对两个表插入数据的时候,写第二个表时怎么样得到写入的第一个表产生的ID?
第一个表的ID是一个自增列.这种情况大家是怎么处理的,是插入第一个表后再用SELECT读出来,再插入第二个表吗?
...全文
86 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangrenda 2004-09-07
  • 打赏
  • 举报
回复
'insert into .......;select @@IDENTITY AS'Identity"
int iID=0;
iID=Convert.toint32(myCmd.ExecuteScalar());
wangsaokui 2004-09-07
  • 打赏
  • 举报
回复
这么写存储过程
declare @id int
insert into [Table] values(,,,)
set @id=@@identity
select @id as id
在前台这么写
SqlCommand cmd=new SqlCommand("存储过程",cnn);
.
.
.
object id=cmd.ExecScalor();
这个id 就返回你刚插入得值了
wangsaokui 2004-09-07
  • 打赏
  • 举报
回复
@@IDENTITY
返回最后插入的标识值。

语法
@@IDENTITY

返回类型
numeric

注释
在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含此语句产生的最后的标识值。若此语句没有影响任何有标识列的表,则 @@IDENTITY 返回 NULL。若插入了多个行,则会产生多个标识值,@@IDENTITY 返回最后产生的标识值。如果此语句激发一个或多个执行产生标识值的插入操作的触发器,则语句执行后立即调用 @@IDENTITY 将返回由触发器产生的最后的标识值。若 INSERT 或 SELECT INTO 语句失败或大容量复制失败,或事务被回滚,则 @@IDENTITY 值不会还原为以前的设置。

在返回插入到表的 @@IDENTITY 列的最后一个值方面,@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 函数类似。

@@IDENTITY 和 SCOPE_IDENTITY 将返回在当前会话的所有表中生成的最后一个标识值。但是,SCOPE_IDENTITY 只在当前作用域内返回值,而 @@IDENTITY 不限于特定的作用域。

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

示例
下面的示例向带有标识列的表中插入一行,并用 @@IDENTITY 显示在新行中使用的标识值。

INSERT INTO jobs (job_desc,min_lvl,max_lvl)
VALUES ('Accountant',12,125)
SELECT @@IDENTITY AS 'Identity'
hhhh63 2004-09-07
  • 打赏
  • 举报
回复
如果两个表是关联的话,将它们合成一个DataTable,插入新记录时,两个表中的ID自然就一致了。如果两个表没有关系,是互相独立的,在更新完第一个表后,第一个表对应的DataTable中的ID就是自动产生的新ID号。
wangsaokui 2004-09-07
  • 打赏
  • 举报
回复
这个问题有太多答案了,楼主搜搜就可以了
@@IDENTITY

62,047

社区成员

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

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

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

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