使用触发器实现以下功能:a:企业内部人员调动时实现部门人数的增减。 
                          B:当删除某部门时,将该部门对应的员工全部删除。 

解决方案 »

  1.   

    再详细点吧,看不明白需求应该要有一个单独的 部门表(部门)
    假如还有一个员工表
    (部门,员工)create trigger test
    on dbo.部门表
    for delete
    as
       if((select count(1) from inserted) = 0)   ----delete 部门
        begin 
            delete from 员工表
             where 部门 in (select 部门 from deleted)
        end
      

  2.   

    部门人数的增减
    --------创建表
      create table t(部门 varchar(1000),员工 varchar(1000))insert into t
    select 'personal', 'wang'
    union
    select 'personal', 'zhang'
    union 
    select 'personal', 'li'
    union 
    select 'finances','zhang'
    union 
    select 'finances','sun'
    union 
    select 'finances', 'qian'---------------写触发器
    if exists(select name from sysobjects
             where name = 'TestTrigger'
               and type = 'TR')
        drop Trigger TestTrigger
    gocreate Trigger TestTrigger
    on dbo.t
    for delete, insert ,update
    as
    if ( (select count(1) from deleted) = 0)  --insert 新增
       begin 
            ---人数统计
            select count(1) as 人数,部门
            from t
            group by  部门 
       end
    else
       if ( (select count(1) from inserted) = 0)  --delete 减员
       begin 
          ---人数统计
          select count(1) as 人数,部门
          from t
          group by 部门
       end
    else
        ---------部门调整
       begin 
          ---人数统计
          select count(1) as 人数,部门
          from t
          group by 部门
       end
          
    go
            
     
    --------------------------测试
    select * from tinsert into t
    select 'jinnji','liu'select * from tdelete from t 
    where 部门 = 'jinnji'select * from tupdate t
    set 部门='jinnji'
    where 员工='qian'select * from tupdate t
    set 部门='finances'
    where 员工='qian'select * from t--------------结果部门 员工
    finances sun
    finances zhang
    personal li
    personal wang
    personal zhang(5 件処理されました)人数 部门
    2 finances
    1 jinnji
    3 personal(3 件処理されました)
    (1 件処理されました)部门 员工
    jinnji liu
    finances sun
    finances zhang
    personal li
    personal wang
    personal zhang(6 件処理されました)人数 部门
    2 finances
    3 personal(2 件処理されました)
    (1 件処理されました)部门 员工
    finances sun
    finances zhang
    personal li
    personal wang
    personal zhang(5 件処理されました)人数 部门
    2 finances
    3 personal(2 件処理されました)
    (0 件処理されました)部门 员工
    finances sun
    finances zhang
    personal li
    personal wang
    personal zhang(5 件処理されました)人数 部门
    2 finances
    3 personal(2 件処理されました)
    (0 件処理されました)部门 员工
    finances sun
    finances zhang
    personal li
    personal wang
    personal zhang(5 件処理されました)
      

  3.   

    为什么 新增用的是deleted表,而删除用的是inserted呢? 
      

  4.   

    通过检查inserted deleted表中的数据数,来判断对数据库进行什么样的操作
    插入新数据时,inserted中有数据,deleted中没有数据
    删除旧数据时,inserted中没有数据,deleted中有数据
    更新数据时,inserted和deleted中都有数据
      

  5.   

    inserted,deleted是系统临时表,inserted简写作ins,deleted简写作del