时间戳实验报告
实验九 指导教师 吴思远 实验时间: 2014 年 5 月 8 日
学院 计算机科学与技术学院 专业 计算机应用 班级 5311204 学号 2012216832 姓名 唐知庚 实验室 s311 实验题目: mysql的触发器。
实验目的:
触发器是特定事件出现的时候,自动执行的代码块,类似于存储过程。触发器 与存储过程的区别在于:存储过程是由用户或应用程序显式调用的, 而触发器是不能被直
接调用的,由dbms 自动执行。 触发器具有这些功能:1、允许/限制对表的修改;2、自动生成派生列,比如自增字段;
3、强制数据一致性;4、提供审计和日志记录;5、防止无效的事务处理;6、启用复杂的业
务逻辑。
本次实验了解mysql 触发器的创建、修改和删除的方法和步骤,掌握在navicat for mysql
中对触发器的进行创建、修改和删除,掌握触发器触发测试的方法。 实验要求:
1、实验前:预习实验内容,学习相关知识。
2、实验中:按照实验内容要求进行实验,实验时注意每种sql 语句的基本命令及各个关
键字的含义,做好实验记录。
3、实验后:分析实验结果,总结实验知识,得出结论,按格式写出实验报告。 4、在整
个实验过程中,要独立思考、独立按时完成实验任务,不懂的要虚心向教师或同学请教。
5、要求按指定格式书写实验报告,且报告中应反映出对本次实验的总结,下次实验前交
实验报告。 实验主要步骤及结果:
一. 启动navicat for mysql ,在mysql –新建连接中完成连接参数配置。 二. 登录到本
地数据库服务器后,连接到test 数据库上。
三. 执行五、教学过程中(三)实验内容的第一部分创建简单触发器,验证触发器的创建
和触发器的触发测试。
1.创建触发器audit_student,该触发器对修改student 表的时间、用户名记录到日志
表中。
双击桌面navicat for mysql快捷方式,连接到test 数据库上(本次实验如果连接到
mysql 数据库上,无法正常完成) ,按顺序运行以下语句,然后点击行sql 语句。
(1).输入如下语句,建立实验表student ,如图9-1所示: create table student (sno
varchar(10), sname varchar(30), sage int); 结果如下图所示: 按钮,运
(2).输入如下语句,建立日志表student_log,并查看日志表是否为空,如图9-2所示:
create table student_log( who varchar(30), whattimetimestamp);
select * from student_log; 结果如下图所示: 我们看到,现在的student_log表中没有记录,全部为null 值。
(3).输入如下语句,在student 表上建立语句触发器,在触发器中将时间、用户记录到
student_log表中。红色before 表示检测的时间为insert 操作前,也可以为after ,表示在
操作后。如图9-3所示:
use test;
create trigger audit_student before insert on student for each row begin 选中student 表,单击右键,选择设计表,点击触发器选项卡,如图所示: 我们可以看到,在insert 操作前,会触发触发器,触发器执行的脚步就是向student_log
表中,写入触发的用户和时间戳。
(4).输入如下语句对触发器进行insert 触发测试,如图所示: 对student 表做一个insert 操作: insert into student values (1992150033,吴思远,40); 输入如下语句查看表student_log,检查触发器工作结果,表student_log中数据如图9-6
所示:
select * from student_log; 结果如下图所示: 我们看到,执行插入语句的是student 表,但现在的student_log表中由触发器自动生
成了1条记录。
四. 执行五、教学过程中(三)实验内容的第二部分改造简单触发器,增加触发类型判断
功能,验证触发器的该造和改造后的触发器触发测试。
(1).输入如下语句,修改日志表结构,增加一个属性存放触发语句类型。如图9-7所示: alter table student_log add (action varchar(20)); 结果图下图所示:
(2)修改触发器,记录触发语句类型。选中student 表,单击右键,选择设计表,点击触
发器选项卡,在定义中对insert 进行编辑, 如图所示 : 修改完毕后,点击按钮,对触发器进行保存。
(3).输入如下语句对触发器进行insert 触发测试,如图所示: 用你自己的学号、姓名、
年龄,对student 表再做一个insert 操作: insert into student values (2012216832,
唐知庚 ,20); 输入如下语句检查触发器工作结果,查看表student_log,表student_log中数据如图
所示: select * from student_log;
五. 自行编写student 表的触发器aduit_student_update,在对student 表进行更新操
作前触发,触发时,向student_log表写入触发用户、触发时间和触发类型。并对该新建进
行触发测试。