例如有两个表:t1,t2 两个表 ID 对应,我在T1表写了个触发器如下:
CREATE TRIGGER wwwww ON [dbo].[t1] 
FOR UPDATE
AS
declare @mc as varchar(20),@id as varchar(10)
select @mc = mc,@id = id from deleted
update t2
set mc = @mc
where id = @id但是我每次更新T1表时每次都更新了多条记录,为什么触发器只更新T3最后一条记录,;例如:
T1表更新了:
id MC
1  11
2  22
3  33
4  44
T2表变化如下:
id MC
1  xx
2  xx
3  xx
4  44只有T1表更新的最后一条记录和T2表对应的发生了变化其余的都没有变化,

解决方案 »

  1.   

    这样写
    CREATE TRIGGER wwwww ON [dbo].[t1] 
    FOR UPDATE 
    AS 
    begin
    update t2 
    set mc = deleted.mc 
    from t2 t,deleted
    where t.id = deleted.id 
    end 
    go
      

  2.   

    deleted 不是在更新的时候存放 被更新表更新之前的数据么
      

  3.   

    begin
        update t2 
        set mc = inserted.mc 
        from t2 t,inserted
        where t.id = inserted.id 
    end 这样就正确了
    你说的deleted 只能把T2表的值更新成 t1以前值
      

  4.   

    CREATE TRIGGER wwwww ON [dbo].[t1] 
    FOR UPDATE 
    AS 
    begin
        update t2 
        set mc = deleted.mc 
        from t2 t,deleted
        where t.id =inserted.id 
    end 
    go
      

  5.   

    上边语句有问题
    CREATE TRIGGER wwwww ON [dbo].[t1] 
    FOR UPDATE 
    AS 
    begin
        update t2 
        set mc = inserted.mc 
        from t2 t,deleted
        where t.id =inserted.id 
    end 
    go