日期:2014-05-17  浏览次数:20611 次

一对多数据插入问题
表一 OrderID(PK),User
表二 ID(PK),ProductID,OrderID(FK)

问一:
要怎么实现一个订单多条记录的插入?
要求用存储过程来实现,当有记录插入失败的时候,回滚所有

问二:
在代码中要怎么实现数据传递?

------解决方案--------------------

create table tbl_1(OrderID int identity(1,1),[User] nvarchar(30));
create table tbl_2(ID int identity(1,1),ProductID int ,OrderID int);

alter table tbl_1 add constraint pk_tbl_1 primary key clustered(
  OrderID
)
go
alter table tbl_2 add constraint pk_tbl_2 primary key clustered(
  ID
)
go
alter table tbl_2 add constraint fk_tbl_2_1 foreign key (OrderID)
references tbl_1(OrderID)
go
create procedure spCSDN
as
begin
  declare @OrderID int
  begin tran
     insert into tbl_1([user]) 
 select 'csdn'
 set @OrderID=@@IDENTITY
 insert into tbl_2(ProductID,OrderID)
 select 1,@OrderID union
 select 2,@OrderID 
  commit tran
end;
go
exec spCSDN
go
select * from tbl_1
select * from tbl_2

------解决方案--------------------
如果你使用的是。net的程序开发,在程序中实现事务操作。
http://blog.csdn.net/huhai463127310/article/details/2772988