第一次使用触发器:
数据表 a 有个字段 (id,vipcode,je,sl)
当向表a 插入新记录时 ,
如果 vipcode 不为空 并且je>2000时
更新另外一个表 b(vipcode ,zk,lbdm)
a.vipcode=b.vipcode如果 lbdm=‘001’ update zk=0.88如果 lbdm=‘002’ update zk=0.8要求就是这样的,要通过触发器来完成update 表B的zk值

解决方案 »

  1.   

    create trigger  tr_insert 
    on ta 
    for insert 
    as 
    begin 
        update b 
        set zk = case when lbdm = '001' then 0.88 else 0.8 end 
            ,vipcode  = i.vipcode 
        from inserted i 
        left join tb b on i.vipcode=b.vipcode 
        where i.vipcode is not null and i.je>2000
    end 
    go
      

  2.   

    create trigger tr_a_up on a
    for insert
    as
    update b set
        b.zk=case when a.lbdm='001' then 0.88
                  when a.lbdm='002' then 0.8
             end
    from inserted a
        join b 
            on a.vipcode=b.vipcode and a.lbdm in('001','002')--还要加个条件
    where a.vipcode is not null
        and a.je>2000
    GO
      

  3.   

    create trigger tri_g on a 
    for insert 
    as 
    begin
    update b set zk= case when lbdm='001' then 0.88 
                     when lbdm='002' then 0.8 end
                 from b join inserted a on a.vipcode=b.vipcode 
                          and a.vipcode is not null and a.je>2000                 
    end
      

  4.   

    是UPDATE B 还是 INSERT B?
    是否包含UPDATE A触发   , for insert ,update ?