例如有2张表    当表一中增加一个人的时候,表二的人数自动增加,比如加一个   陈八    男    ,   那么相应的表二的男的人数中就应该自动改为5,请问这样的触发器怎么写,我是新手麻烦大家了
姓名     性别
赵一     女
孙二     女
张三     男
李四     男
王五     男
刘六     女
方七     男性别    人数
女       3
男       4

解决方案 »

  1.   

    -->写个视图就行了:create view v_count
    as
    select 性别,count(1) as 人数 from 表
      

  2.   

    create view v_count
    as
    select 性别,count(1) as 人数 from 表 group by 性别
      

  3.   

    CREATE TRIGGER my_trig ON 表一 FOR INSERT
    as
    begin
      if exists(select 1 from 表二 where 性别 = (select 性别 from inserted))
         update 表二 set 性别 = 性别 + 1
      else 
         insert into 表二 values((select 性别 from inserted),1)
    end
      

  4.   

    create trigger _trigger on 表1
    for insert
    as 
    begin
    declare @sex char(2)
    select @sex=性别 from inserted
    if @sex='男'
    update 表2 set 人数=人数+1 where 性别='男'
    else
    update 表2 set 人数=人数+1 where 性别='女'
    end
      

  5.   


    create trigger tr_insert on 表1 after insert
    As
       update 表2 set [人数]=[人数]+1 where [性别]=inserted.[性别]
      

  6.   

    -->表2初始化为当前表1的人数,就不要在触发器里判断了:
    create trigger trigger_a
    on 表1
    for insert,update,delete
    as
    set nocount on update 表2
    set 人数=人数+isnull(ins,0)-isnull(del,0)
    from 表2 a
    left join (select 性别,count(1)ins from INSERTED group by 性别) b on a.性别=b.性别
    left join (select 性别,count(1)del from DELETED group by 性别) c on a.性别=c.性别set nocount off
      

  7.   

    create trigger trigger_a
    on 表1
    for insert 
    asupdate 表2
        set 人数=人数+isnull(ins,0
    from 表2 a
    right join (select 性别,count(1)ins from INSERTED group by 性别)i on i.性别 = a.性别
      

  8.   

    set 人数=人数+isnull(ins,0 )