如何向后台数据库中插入多条记录?

本文探讨了在SQL Server 2005中使用存储过程实现事务处理的方法,特别是如何在一个事务中完成主表记录的插入及子表的批量插入,并讨论了参数传递和循环控制等问题。

现在我要处理一个问题,步骤如下:

1,在主表中插入一条记录,获取这条记录的主键1,主键是自增的。

2,在子表中插入多条与主键1相关的记录,并且记录的数量是随机的,不确定。

要求:

步骤1,2要同时完成或者取消,即事务的概念。在sqlserver2005中可以写一个存储过程,或者在前台用c#控制逻辑。

哪位高手可以帮忙解决一下?

例如:

表1:(主表)orders(oid,customerid,gettime,nums,flags)primarykey:oid identity(自增的)int

表2:(子表)orderdetails(odid,oid,gid)primarykey:odid foreignkey:oid

begin try

begin tran

declare @oid int,@nums int,@f int;

set @f=1;

insert into orders(customerid,gettime,flags) values(1,getdate(),2);

select @oid=oid from orders where flags=2;

select @nums=nums from orders where oid=@oid;

update orders set flags=1 where flags=2;

while @nums>0

begin

insert into orderdetails(odid,oid,gid) values(?,@oid,?);

set @nums=@nums-1;

end

end try

begin catch

rollback tran;

set @f=0;

end catch

if @f=1

commit tran;

上面存在问题就是无法将子表的多个参数传递到循环中?如何解决?

另外的一种方法是在逻辑层用程序控制,怎么控制?

转载于:https://www.cnblogs.com/xingyayang/archive/2008/10/29/1322313.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值