create trigger tr
on B
for update
asif update([A.id])
begin
      update C
      set [a.name]=A.name
      from C
      join inserted I on C.id=I.id
      join A on A.id=I.[A.id]
end

解决方案 »

  1.   

    create table A
    (
      id int,name varchar(10)
    )
    create table B
    (
      id int,name varchar(10),[A.id] int  
    )
    create table C
    (
      id int,txt varchar(10),Bid varchar(10),name varchar(10),[a.name] varchar(10)
    )
    insert A
    select 1,'O型' union
    select 2,'A型' union
    select 3,'AB型'
    insert B
    select '1001','张三',2 union
    select '1002','李四',1
    insert C
    select 1,'aaa','1001','张三','A型' union
    select 2,'bbb','1002','李四','O型' 
    go--创建触发器
    create trigger tr
    on B
    for update
    asif update([A.id])
    begin
          update C
          set [a.name]=A.name
          from C
          join inserted I on C.Bid=I.id
          join A on A.id=I.[A.id]
    end
    go--测试
    update B set [A.id]=3--查看
    select * from C--删除测试环境
    drop table A,B,C--结果
    /*
    id          txt        Bid        name       a.name     
    ----------- ---------- ---------- ---------- ---------- 
    1           aaa        1001       张三         AB型
    2           bbb        1002       李四         AB型(所影响的行数为 2 行)
    */
      

  2.   

    同意 vivianfdlpw() ( )
      

  3.   

    非常感谢 vivianfdlpw() 耐心细致的解答. 马上结贴