我没有试:CREATE TRIGGER [TRI_name] ON dbo.table 
FOR INSERT 
ASupdate t_b set NUM2 = inserted.MUN1
   where t_b.ID2 in (select ID1 from inserted)
   
insert into t_b (ID2,NUM2)
   select ID1,MUN1 from inserted where not exists (select * from t_b where ID2=inserted.ID1)return

解决方案 »

  1.   

    insert 语句应为:
    insert into t_b (ID2,NUM2)
       select ID1,MUN1 from inserted where inserted.ID1 not exists (select ID2 from t_b )
      

  2.   

    update 有错!
    错误107:列前缀“inserted”与查询中所用的表名或别名不匹配
      

  3.   

    where inserted.ID1 not exists (select ID2 from t_b )
    才是错误的!
      

  4.   

    已测试通过:CREATE TRIGGER TRIGGER_ta ON t_a 
    FOR INSERT 
    ASDECLARE @ID1 INTEGER
    SELECT @ID1 = ID1 FROM INSERTEDIF EXISTS(SELECT * FROM t_b WHERE ID2 = @ID1)
    UPDATE t_b SET NUM2 = NUM2 + i.NUM1 FROM t_b tb INNER JOIN INSERTED i ON tb.ID2 = i.ID1
    ELSE
    INSERT t_b SELECT * FROM INSERTED
      

  5.   

    CREATE TRIGGER aaa ON [dbo].[t_a] 
    FOR INSERT, UPDATE, DELETE 
    AS
    DECLARE @num1 int
    SELECT @num1 = NUM1 from inserted
    update t_b set NUM2=@num1
       where t_b.ID2 in (select ID1 from inserted)insert into t_b (ID2,NUM2)
       select ID1,NUM1 from inserted where not exists (select * from t_b where ID2=inserted.ID1)return我搞定了谢!