declare @tmpflag int
set @tmpflag = select 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

解决方案 »

  1.   

    用INSTEAD OF吧
    CREATE TRIGGER TEST ON temp_tableA
    FOR INSERT,UPDATE
    AS 
    BEGIN
    IF EXISTS(SELECT 1 FROM temp_tableA A,INSERTED B WHERE A.ID=B.ID
    AND A.NAME=B.NAME)
    BEGIN
    declare @flag int
    set @tmpflag = select max(i) from tableB
    insert temp_tableA(id,name,flag) select id,name,@tmpflag+1 from inserted
    END
    ELSE
    insert temp_tableA(id,name,flag) select id,name,'1' from insertedEND
      

  2.   

    用INSTEAD OF吧
    CREATE TRIGGER TEST ON temp_tableA
    INSETAD OF INSERT,UPDATE
    AS 
    BEGIN
    IF EXISTS(SELECT 1 FROM temp_tableA A,INSERTED B WHERE A.ID=B.ID
    AND A.NAME=B.NAME)
    BEGIN
    declare @flag int
    set @tmpflag = select max(i) from tableB
    insert temp_tableA(id,name,flag) select id,name,@tmpflag+1 from inserted
    END
    ELSE
    insert temp_tableA(id,name,flag) select id,name,'1' from insertedEND
      

  3.   

    zarge(鲨至) 朋友的做法我试验时提示我"select"那里有错误loverforever(学无止境) 朋友你的方法得不到我想要的结果再帮忙想想好吗?谢谢!
      

  4.   

    更正一下
    set @tmpflag = select max(i) from tableB
    改为
    select @tmpflag = max(i) from tableB
      

  5.   

    改@tmpflag  为@@tmpflag 试一下。不过这样你就不能在其他地方引用这个变量名了。
      

  6.   

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