一、实验目的:
熟练使用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 ;
添加删除触发器
DELETE FROM eemp WHERE empno=2;
(在关闭外键约束的前提下)
验证删除之后写入emp_his的功能
问题2:设计一个行触发器:当DEPT表中deptno列的值被更新时,EMP表中相应的deptno值也被修改。
验证更新触发器的功能
原先的表格
更新dept表中的deptno列的值
执行之后可见成功了,原本的deptno从1变成了6
问题3:设计一个行触发器用于emp表的更新,当修改员工的工资sal时候触发更新所在部门的工资总和。
首先在dept表中添加一个sumsalary coulmn
行触发器用于emp表的更新
验证两表同时更新工资的功能
更新成功
问题4:创建触发器:当emp表中删除或插入一些记录时,将每个员工所在部门的最新人数写入dept表。
首先向dept表添加一个person coulmn
添加删除更新触发器
验证删除记录更新部门人数的功能
添加添加更新触发器
验证添加记录更新部门人数的功能