sql如何向一个表插入时,向另外一个表插入多行
表kh(khdm,khmc)
001,单位1
002,单位2
.....
表xm(xmdm,xmmc)
1001,牙刷
1002,牙膏
.....
表gx(khdm,xmdm,jg)
001,1001,10
001,1002,20
002,1001,11
002,1002,19
.....
向kh插入(003,单位3)时gx表也自动插入(003,1001,null),(003,1002,null)....xm表有多少条记录就插入多少
[解决办法]
insert kh select '003','单位3'insert gx select a.khdm,b.xmdm,null from (select '003' khdm)a,(select xmdm from xm)b
[解决办法]
SET XACT_ABORT ON BEGIN TRANSACTIONINSERT INTO kh( khdm, khmc)VALUES ( '003', '单位3')INSERT INTO gx( khdm, xmdm, jg)SELECT '003', xmdm, NULLFROM xm WITH(NOLOCK) COMMIT TRANSACTION
[解决办法]
if not object_id('kh') is null drop table khGoCreate table kh([khdm] nvarchar(3),[khmc] nvarchar(3))Insert khselect N'001',N'单位1' union allselect N'002',N'单位2'Go if not object_id('xm') is null drop table xmGoCreate table xm([xmdm] int,[xmmc] nvarchar(2))Insert xmselect 1001,N'牙刷' union allselect 1002,N'牙膏'Goif not object_id('gx') is null drop table gxGoCreate table gx([khdm] nvarchar(3),[xmdm] int,[jg] int)goif object_id('tri','TR')is not null drop trigger trigocreate trigger tri on khfor insert asinsert gx select a.khdm, b.xmdm, null from (select khdm from inserted)a,(select xmdm from xm)bgoinsert kh select '001',N'单位1'select * from gxinsert kh select '002',N'单位2' union all select '003',N'单位3'select * from gx/*khdm xmdm jg---- ----------- -----------001 1001 NULL001 1002 NULL(2 row(s) affected)(4 row(s) affected)(2 row(s) affected)khdm xmdm jg---- ----------- -----------001 1001 NULL001 1002 NULL003 1001 NULL002 1001 NULL003 1002 NULL002 1002 NULL(6 row(s) affected)*/