一对多数据插入问题
表一 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