insert多行数据时如何得到scope_identity()

happydaily 2012-03-04 05:38:35
insert into lanEmail(EmailTitle,timestr,EmailContent,FromUser,ToUser) select '工作提醒' ,getdate(),contentstr,'系统消息', ToUser from Tasklist where abs(datediff(hh,getdate(),timestr))<2 ;

lanEmail表还有一个收件人的附表,MailSjlList(id,mailid,sjr),上面的语句可能一次新增N行,如何把ID、ToUser取出来放存到MailSjlList,另外Touser是个 用户1,用户2,用户3, 要分开存入sjr(有时间就帮我写下,没时间我就自己想吧)
感谢各位~
...全文
144 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
AcHerat 2012-03-05
  • 打赏
  • 举报
回复
scope_identity()是获取当前插入最后一行自增列的标识号的,多行就不要用这个了,既然有where那么可以在插入后重新在表里查到相应的数据吧!或者做触发器去处理。
gogodiy 2012-03-05
  • 打赏
  • 举报
回复
你可以这样试试:
在insert into lanEmail之前,先找出lanEmail表当前最大的ID。比如是50,然后insert完毕后,再执行
insert into MailSjlList(mailid,sjr) select id,ToUser from lanEmail where id>50
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 happydaily 的回复:]

引用 2 楼 travylee 的回复:
你的ID是值得什么ID,上一个表没有ID?

insert into MailSjlList(mailid,sjr)
MailId就是刚刚insert LanEmail 时它的ID,一行数据我知道用scope_identity()得到,但是现在是插入多行?我希望的就是插入一行时停一下让它把MailSjlList也新增相应的内容,然后再插入下一行
……
[/Quote]

你的意思就是主表插入一行,然后停下来,附表插入一行,然后再主表,是这个意思么??
happydaily 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 travylee 的回复:]
你的ID是值得什么ID,上一个表没有ID?
[/Quote]
insert into MailSjlList(mailid,sjr)
MailId就是刚刚insert LanEmail 时它的ID,一行数据我知道用scope_identity()得到,但是现在是插入多行?我希望的就是插入一行时停一下让它把MailSjlList也新增相应的内容,然后再插入下一行
  • 打赏
  • 举报
回复

insert into MailSjlList(id,sjr)
select max(a.mun) as id,a.ToUser from(
select row_number()over(partition by ToUser order by getdate()) as mun,
ToUser from Tasklist) a group by a.ToUser
  • 打赏
  • 举报
回复
你的ID是值得什么ID,上一个表没有ID?
BoSys 2012-03-04
  • 打赏
  • 举报
回复
帮顶, 做个记号,这个以后用得到!

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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