日期:2014-05-16  浏览次数:20549 次

怎么样一次性增加主附表多条记录?
有个主表,ID 是个自增类型。
有个明细表(附表),他的外键是主表的ID。
我现在有N条记录(从别的表select来的),想一次性插到这两个表里,除了用游标一条一条插,还有没有别的方法?
------解决方案--------------------
http://www.wangchao.net.cn/bbsdetail_577538.html

这个比较全,上面那个内容断了
------解决方案--------------------
楼主不妨先去掉外键的关联关系,我想知道楼主查询到的数据是否和要插入的表结构一样,而且有外键关联

如果是的话,可以这么做

1.去掉插入明细表的外键关系
2.给主表新增一个字段,存查询数据主表的自增ID
3.插入主表 明细表数据,按照新增字段关联更新明细表的外键字段

例如:
插入主表  testA(ID,NAME)
明细表    testB(ID,KEY_ID,NAME)  KEY_ID为外键字段值

去掉明细表外键关系

查询主表数据为:  select id,name from 查询主表
明细表数据为:    select id,key_id,name from 查询明细

给主表加一个字段,key_id  插入主表数据
insert into testA(name,key_id)
select name,id from 查询主表
插入明细表数据
insert into testB(key_id,name)
select key_id,name from 查询明细
更新明细外键数据
update testB a
set a.key_id = b.key_id
from testA b
where a.key_id = b.id and b.key_id is not null
然后删掉主表新增的字段  key_id  即可。

在测试表先试试!
------解决方案--------------------
我弄个例子,大家就明白了

create table tmain
(MainID int identity(1,1),PName varchar(20)) --这个是主表

create table tDetail
(DetailID int identity(1,1), MainID int,Spec varchar(200))--这个是明细表。

--这个是其他的表。要从这里把数据插入主表和明细表
create table tOther(PName varchar(20),PSpec varchar(200))

--先弄点数据到其他表里
insert into tOther (PName,PSpec)
select 'PN1','Pspec1' union all
select 'PN1','Pspec2' union all
select 'PN1','Pspec3' union all
select 'PN2','Pspec4' union all
select 'PN2','Pspec5' 

--要求查出来的数据如下