如何向后台数据库插入多条记录?
2008-10-29 17:22
302 查看
现在我要处理一个问题,步骤如下:
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;
上面存在问题就是无法将子表的多个参数传递到循环中?如何解决?
另外的一种方法是在逻辑层用程序控制,怎么控制?
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;
上面存在问题就是无法将子表的多个参数传递到循环中?如何解决?
另外的一种方法是在逻辑层用程序控制,怎么控制?
相关文章推荐
- 如何向后台数据库中插入多条记录?
- 刚刚做了一个小项目,存在一个问题,就是如何在数据库中插入多条记录
- mysql 插入多条数据如何使用INSERT插入多条记录
- 如何瞬间在数据库插入一百万条记录
- 如何得到JDBC Insert 语句执行后插入Oracle 数据库记录的主键
- PHP+MYSQL如何插入记录到数据库
- 用一条SQL语句实现向数据库中插入多条记录的方法
- 如何得到JDBC Insert 语句执行后插入数据库记录的主键
- 因网络延迟造成数据库插入相同记录,如何解决.
- 向数据库中插入一条记录后如何获得自动生成的列值?
- 如何用insert或update在同一表中插入或更新多条记录
- 一次向数据库中插入多条相同记录的SQL方法(只有一个列不同)
- 一次向数据库插入多条记录
- 如何查询oracle数据库一个表中的多条记录是否有重复
- mysql中如何使用INSERT一次性插入多条记录
- 使用jdbc向数据库中插入多条记录,探究有索引和没有索引的查询速度的代码
- 如何得到JDBC Insert 语句执行后插入Oracle 数据库记录的主键
- 全面解决--如何获得刚插入数据库的记录的ID号?
- 如何向数据库中插入包含单引号的记录
- sql向数据库中循环插入多条记录