declare @flag table(row int identity,id int)
insert @flag(id) select id from inserted
insert temp_tableA(id,name,flag) 
  select i.id,i.name,(select isnull(max(i),0) from tableB)+f.row 
    from inserted as i inner join @flag as f on i.id=f.id

解决方案 »

  1.   

    declare @tmpflag int
    select @tmpflag = max(i) from tableB
    select id,name,identity(int,1,1) as no into #tmp from inserted
    insert temp_tableA(id,name,flag) select id,name,@tmpflag+no from #tmp
      

  2.   

    declare @flag int
    set @tmpflag = select max(i) from tableB
    insert temp_tableA (id,name,flag) select id,name,@tmpflag+(select sum(1) from inserted where id<=tem.id) from inserted tem
      

  3.   

    id是会被修改的 所以不能用它做为条件我想解决的是在某个表里写个UPDATE触发器
    当其被UPDATE时往其对应的目的表里写数据
    每条记录被UPDATE时同时将deleted和inserted里的记录插入目的表
    但是当多条记录被UPDATE时
    SQLSERVER会先把所有的deleted里的记录先插入目的表
    再把所有的inserted里的记录插入目标表
    根据需求不可以这样
    必须逐条UPDATE
    即deleted后inserted再进行下一条的deleted和inserted
    我想到了使用游标
    不过我从没用过
    看帮助也搞不清楚
    哪位老大能帮忙给个例子啊?
    我先谢过了!!!