熟悉触发器的请近,一个有一点复杂的更新插入触发器
create   table   t1   (name   varchar(50),unit   varchar(50),class   varchar(50)) 
                                                                                                                                     --   class   就只有3种(差,合格,优秀) 
 insert   t1 
 select    'a '   , '1班 ', '优秀 '   union   all 
 select    'a ', '1班 ', '合格 '   union   all 
 select    'a ', '1班 ', '较差 '   union   all 
 select    'a ', '2班 ', '优秀 'union   all 
 select    'a ', '2班 ', '优秀 'union   all 
 select    'a ', '2班 ',    '合格 '   union   all   
 select    'b '   , '1班 ', '优秀 '   union   all 
 select    'b ', '1班 ', '合格 '   union   all 
 select    'b ', '1班 ', '较差 '   union   all 
 select    'b ', '2班 ', '优秀 'union   all 
 select    'b ', '2班 ', '优秀 'union   all 
 select    'b ', '2班 ',    '合格 '        
 表t2完全是根据表t1   得到的      以上会得到如下的t2   ,otherthing列除外   
 create   table   t2   (name   varchar(50),unit   varchar(50),较差   int   ,合格   int   ,优秀   int   ,otherthing   varchar(50)) 
    insert   t2 
 select    'a ', '1班 '   ,1,1,1, 'wwfefaafaf '   union   all 
 select    'a ', '2班 ',0,1,2   , 'fdasfdasfd '   union   all 
 select    'b ', '1班 '   ,1,1,1, 'wwewew '   union   all 
 select    'b ', '2班 ',0,1,2   , 'eeeeee '        
 在表t1上定义个触发器,想得到一个汇总更新插入   在t2表也同时变化 
 比如   更新   t1的第一行数据      ,t2会相应的变化 
                在t1插入       'a '   , '1班 ', '较差 '      ,t2会有变化 
             在t1中插入       'c '   , '4班 ', '较差 '      ,t2会有增加一条    'c '   , '4班 ',1,0,0   ,null的行      
 这样的触发器有点复杂   不过理解起来不难 
------解决方案--------------------create table t1 (name varchar(10),unit varchar(10),class varchar(10)) 
 create table t2 (name varchar(10),unit varchar(10),较差 int ,合格 int ,优秀 int ,otherthing varchar(10)) 
 go 
 create trigger tr_t1 on t1 
 for update,delete,insert 
 as 
 begin   
       insert t2(name,unit,较差,合格,优秀) 
       select distinct name,unit,0,0,0 from inserted _i 
       where not exists(select 1 from t2 where _i.name = name and _i.unit = unit)   
       update t2 
       set t2.较差 = t2.较差 + (select count(1) from inserted where name = t2.name and unit = t2.unit and class =  '较差 ') 
             ,t2.合格 = t2.合格 + (select count(1) from inserted where name = t2.name and unit = t2.unit and class =  '合格 ') 
             ,t2.优秀 = t2.优秀 + (select count(1) from inserted where name = t2.name and unit = t2.unit and class =  '优秀 ')   
       update t2 
       set t2.较差 = t2.较差 - (select count(1) from deleted where name = t2.name and unit