E5 触发器的定义和应用

一、实验目的:

熟练使用MySQL触发器的定义和应用。

二、实验要求:

1、基本硬件配置:英特尔Pentium III 以上,大于4G内存;

2、软件要求:Mysql;

3、时间:1小时;

4、撰写实验报告并按时提交。

三、实验内容:

问题1创建触发器:当从emp表中删除一些记录时,将删除的记录写入员工历史表(首先创建历史表)。

Use example;

drop table if exists emp_his;

CREATE TABLE emp_his AS SELECT * FROM EEMP WHERE 1=2;      /*建一张空表*/

Delimiter // 
CREATE  TRIGGER tr_del_emp 
   after DELETE  
   ON  eemp 
   FOR EACH ROW    
BEGIN
INSERT INTO emp_his(deptno , empno, ename , job ,mgr , sal , comm , hiredate )

       VALUES( old.deptno, old.empno, old.ename , old.job,old.mgr, old.sal, old.comm, old.hiredate);

END

//

Delimiter ;

添加删除触发器

E5 触发器的定义和应用_第1张图片

DELETE FROM eemp WHERE empno=2;

(在关闭外键约束的前提下)

E5 触发器的定义和应用_第2张图片

验证删除之后写入emp_his的功能

E5 触发器的定义和应用_第3张图片

问题2设计一个行触发器:当DEPT表中deptno列的值被更新时,EMP表中相应的deptno值也被修改。

E5 触发器的定义和应用_第4张图片

验证更新触发器的功能

原先的表格

E5 触发器的定义和应用_第5张图片更新dept表中的deptno列的值

E5 触发器的定义和应用_第6张图片执行之后可见成功了,原本的deptno从1变成了6

E5 触发器的定义和应用_第7张图片

问题3设计一个行触发器用于emp表的更新,当修改员工的工资sal时候触发更新所在部门的工资总和。

首先在dept表中添加一个sumsalary coulmn

行触发器用于emp表的更新

E5 触发器的定义和应用_第8张图片验证两表同时更新工资的功能

更新成功

E5 触发器的定义和应用_第9张图片

问题4创建触发器:当emp表中删除或插入一些记录时,将每个员工所在部门的最新人数写入dept表。

首先向dept表添加一个person coulmn

E5 触发器的定义和应用_第10张图片添加删除更新触发器

E5 触发器的定义和应用_第11张图片验证删除记录更新部门人数的功能

E5 触发器的定义和应用_第12张图片添加添加更新触发器

E5 触发器的定义和应用_第13张图片验证添加记录更新部门人数的功能

E5 触发器的定义和应用_第14张图片

你可能感兴趣的:(课内,sql,mysql,数据库)