我有两个表,A1和A2。其中A1的键是ID,A2包含了对应于A1中每条记录的不同条目,比如在A1里,有:
ID sth1 sth2
001 ... ...
002 ... ...
A2里有:
ID index sth
001 1 ....
001 2 ....
002 1 ....
002 2 ....
002 3 ....
003 1 ....
003 2 ....
这些内容是从ASP.NET页面中由客户端输入的,包括主记录的内容和对应该记录的若干条目,添加主记录内容我已经做了,问题是动态添加各个条目应该怎么实现?是否需要用到事务?因为每条记录至少有两个条目,否则会破坏数据库完整性。
我是菜鸟,还请各位大人不吝赐教,在此多谢了!!
ID sth1 sth2
001 ... ...
002 ... ...
A2里有:
ID index sth
001 1 ....
001 2 ....
002 1 ....
002 2 ....
002 3 ....
003 1 ....
003 2 ....
这些内容是从ASP.NET页面中由客户端输入的,包括主记录的内容和对应该记录的若干条目,添加主记录内容我已经做了,问题是动态添加各个条目应该怎么实现?是否需要用到事务?因为每条记录至少有两个条目,否则会破坏数据库完整性。
我是菜鸟,还请各位大人不吝赐教,在此多谢了!!
002 1 ...
002 2 ...
002 3 ...
也就是说,每条记录所带条目的数目是由客户端动态决定的,可以是2到N条。
ID由SQL自动生成(在此要感谢zjcxc(邹建),俺套用了他的一段代码加以修改实现的)
drop table A1
go
create table A1(id varchar(10))
insert into A1(ID) values('001')
insert into A1(ID) values('002')
goif object_id('pubs..A2') is not null
drop table A2
go
create table A2(ID varchar(10),[index] int)
insert into A2(ID,[index]) values('001', 1)
insert into A2(ID,[index]) values('001', 2)
insert into A2(ID,[index]) values('002', 1)
insert into A2(ID,[index]) values('002', 2)
godeclare @I int
set @I = 3 --(2--N)
declare @ID as varchar(10)
set @ID = '003'
insert into A1(ID) values(@ID)declare @J int
set @J = 1
while @J <= @I
begin
insert into A2(ID , [index]) values(@ID , @J)
set @J = @J + 1
endselect * from A1
select * from A2drop table A1,A2/*
id
----------
001
002
003(所影响的行数为 3 行)ID index
---------- -----------
001 1
001 2
002 1
002 2
003 1
003 2
003 3(所影响的行数为 7 行)
*/