sql server返回插入记录的ID(多条记录)

需要先插入多条数据到表1,然后再将表1中插入的多条记录的ID插入到表2,这种情况要怎么取到多个ID?表1的ID是自动增长的那种是在SQLServer2000下我想要的效果... 需要先插入多条数据到表1,然后再将表1中插入的多条记录的ID插入到表2,这种情况要怎么取到多个ID?表1的ID是自动增长的那种
是在SQL Server 2000下
我想要的效果是在存储过程中执行一条insert select语句插入多条数据,然后在每插入一条数据后返回刚插入的这条ID,因为这时需要把ID再插到另一个表中,这种效果能实现吗?
不用触发器可以实现吗?因为我是想只有批量插入时才调用这个存储过程
展开
 我来答
mores1
2010-05-29 · TA获得超过2419个赞
知道小有建树答主
回答量:254
采纳率:0%
帮助的人:173万
展开全部
你的这个需求好象直接再把记录插入到表2就可以,但我估计你不是这个意思。

比较笨的办法,可以定义一个数组用于记录表1的ID值,或者用个临时表来记录表一新增加的记录ID列表。

insert后,query的指针应该还是停留在最新增加的记录上的,因此是可以取得到ID值的。

代码如下,假设表一只有二个字段,一个是ID(自动增量),一个是字段A(字符型),

var
sql:string;
id1:integer;
begin
sql:='insert into 表一 ('''+字段A+''') values ('''+ '内容'+''')';
query1.close;
query1.sql.clear;
query1.sql.add(sql);
query1.Execsql;
id1:=query1.fieldbyname('id').asinteger;
//接下来可以把ID1的值写入临时表或者数组了,如果是需要不同的机器取得ID值,可以用临时表,不过速度会慢些,如果只是本机取得,就用数组好了。
//后面的代码略
...
...

end;

上述代码我没有条件试,应该可以,另外还可以用append的方法追加记录,这样就一定可以用上面的方法取到ID值了。

var
id1:integer;
begin
query1.append;
query1.fieldbyname('字段A').asstring = '内容';
query1.post;
id1:=query1.fieldbyname('ID').asinteger;
//这种方法一定可以取得到ID值。
//后面你自行对取得的ID进行存储就行了,临时表或者数组都可以。代码略
end;
shutao917
推荐于2016-05-12 · TA获得超过1213个赞
知道大有可为答主
回答量:2199
采纳率:0%
帮助的人:3129万
展开全部
其实触发器是可以实现的,只要在触发器里面加入一个判断插入数据的行数就可以了:
IF object_id('TR_Insert_tableA') is not null
drop trigger TR_Insert_tableA
go
create trigger TR_Insert_tableA
on tableA for insert
as
begin
IF (Select count(*) from inserted)>1
begin
insert into tableB(id) select id from inserted
end
end
如果一定要用存储过程也是有很多办法的,具体可以Hi我
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dr_zxp
2010-05-29 · TA获得超过861个赞
知道小有建树答主
回答量:765
采纳率:100%
帮助的人:853万
展开全部
插入数据如果带有时间字段,可以用查询语句找出来
insert into 表2
select id from 表1 where 时间条件

否则的话,在表1建立一个触发器,每插一次就插入表2

create trigger myt
as
begin
@id integer
select id into @at from inserted
if @id>0 then
insert into 表2
select id from inserted
end if
end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式