怎么样一次性增加主附表多条记录?
有个主表,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'
--要求查出来的数据如下