日期:2014-05-18 浏览次数:20815 次
declare @maxcount int --保存ccc表内 bh 最大值 declare @countnum int --保存需要插入的数据一共多少条 decalre @current int --保存当前插入第几条 set @current =1 set @countnum=0 set @maxcount=(select top 1 bh from ccc order by bh desc)--取得ccc内 bh 最大值 --ccc表可能为空值所以要判断 if @maxcount is null set @maxcount=0 select dataid=indentity(int,1,1),* into #tempccc from deleted --建立临时表,含有自动编号 set @countnum=(select count(1) from #tempccc) --取得一共需要插入ccc内几条数据 while @current <= @countnum --当前插入编号 小于最大编号 begin set @maxcount=@maxcount+1 --ccc内 bh 最大值+1 insert into ccc(bh,id,other) select @maxcount,id,other from #tempjsxxb where dateid=@current --把当前的一条数据插入ccc bh用cc内最大值+1 set @current=@current +1 --当前编号+1 end drop table #tempjsxxb
declare @maxcount int --保存ccc表内 bh 最大值 set @maxcount=(select top 1 bh from ccc order by bh desc)--取得ccc内 bh 最大值 select dataid=indentity(int,1,1),* into #tempccc from deleted --建立临时表,含有自动编号 insert into ccc(bh,id,other) select isnull(@maxcount,0)+dataid,id,other from #tempjsxxb
------解决方案--------------------
没必要循环插入,你将@maxcount当成dataid的一个偏移量就是,一次插入。
------解决方案--------------------
ccc表字段增加一个bh(编号)字段,bh不是自动增加
---------------
你把这个字段设置成自动增加,那更简单,直接:
insert into ccc(id,other) select id,other from deleted
------解决方案--------------------
create table #ccc (bh int) select top 3 dataid=identity(int,1,1) into #1 from syscolumns select top 4 dataid=identity(int,1,1) into #2 from syscolumns declare @maxcount int --保存ccc表内 bh 最大值 set @maxcount=(select top 1 bh from #ccc order by bh desc)--取得ccc内 bh 最大值 insert #ccc select isnull(@maxcount,0)+dataid from #1 select * from #ccc /* bh ----------- 1 2 3 */ go declare @maxcount int --保存ccc表内 bh 最大值 set @maxcount=(select top 1 bh from #ccc order by bh desc)--取得ccc内 bh 最大值 insert #ccc select isnull(@maxcount,0)+dataid from #2 select * from #ccc /* bh ----------- 1 2 3 4 5 6 7 */ go drop table #ccc,#1,#2
------解决方案--------------------