日期:2014-05-19  浏览次数:20595 次

如何用触发器实现这个问题
我将题目和我做的发在下面,就差一个问题.求大虾教教....


(3)学校人力资源管理系统
? 实现学校部门信息、职务、职称和教职工信息管理;
? 实现教师的学籍经历管理;
? 实现教师的家庭关系管理;
? 实现教师的奖惩信息管理;
? 创建存储过程查询学校各部门各种职称的教职工数量;
? 创建触发器当增加、删除教职工和修改教职工部门信息时自动修改相应部门的职工人数;
? 创建规则用于保证教职工的E-Mail的输入格式正确;
? 建立数据库相关表之间的参照完整性约束。


不会做这个问题.!!
(
修改教职工部门信息时自动修改相应部门的职工人数;
)

create   database   lijuan
use   lijuan
create   table   depart(
部门名   char(20)   not   null   primary   key,
职务   char(30),
教职工人数   int)

create   table   teacher(
职工号   int   not   null   primary   key   ,
姓名   char(20)     not   null   ,
部门名   char(20),
工作时间   datetime,
任课   char(20),
职称   char(20),
邮箱   char(30))

create   table   jiating(
姓名   char(20),
职工号   int   not   null   foreign   key   references   teacher(职工号),
父母是否健在   char(30),
婚否   char(5)   check(婚否= '是 '   or   婚否= '否 '),
是否有孩子   char(20))


create   table   xueji(
姓名   char(20)   ,
职工号   int   not   null   foreign   key   references   teacher(职工号),
小学   char(30),
小学时间   char(30),
初中   char(30),
初中时间   char(30),
高中   char(30),
高中时间   char(30),
大学   char(30),
大学时间   char(30),
研究生   char(30),
研究生时间   char(30),
博士   char(30),
博士时间   char(30))


create   table   gongzi(
姓名   char(20),
职工号   int   not   null   foreign   key   references   teacher(职工号),
工资   float,
是否奖惩   char(5)   check   (是否奖惩= '是 '   or   是否奖惩= '否 '),
奖金   float,
罚金   float
)

insert   depart   values( '教务处 ', '管理教学事务 ', '0 ')
insert   depart   values( '学生处 ', '管理学生 ', '0 ')
insert   depart   values( '教导处 ', '管理教学 ', '0 ')
insert   depart   values( '后勤部 ', '管理后勤 ', '0 ')


create   trigger   trig1   on   teacher
for   insert
as
update   depart   set   教职工人数=教职工人数+1   where   depart.部门名=(select   部门名   from   inserted   where   部门名= '教务处 ')
update   depart   set   教职工人数=教职工人数+1   where   depart.部门名=(select   部门名   from   inserted   where   部门名= '学生处 ')
update   depart   set   教职工人数=教职工人数+1   where   depart.部门名=(select   部门名   from   inserted   where   部门名= '教导处 ')
update   depart   set   教职工人数=教职工人数+1   where   depart.部门名=(select   部门名   from   inserted   where   部门名= '后勤部 ')


create   trigger   trig2   on   teacher
for   delete
as
update   depart   set   教职工人数=教职工人数-1   where   depart.部门名=(select   部门名   from   deleted   )

update   teacher   set   部门名= '学生处 '   where   职工号=1(就是这个问题,在更新表的时候怎么同时在原属的部门删除信息,并在新部门人员中多加上一个)


create   rule   rule1   as   @c1   like   '%@% '
exec