1、学生课程实验报告书级 国脉信息学院 系计算机科学与技术 专业 班学号姓名 2012 -2013 学年 第 2 学期实验项目: 触发器 实验时间: 实验四 触发器一、实验目的通过实验使学生加深对数据库完整性的理解,学会创建和使用触发器。二、实验原理1、INSERT 触发器的工作原理在向表中插入数据的时候,INSERT 触发器自动执行,新增加的记录增加到触发器表中和 inserted 表中。Inserted 表是一个逻辑表,保存所插入数据记录的拷贝。触发器通过检查 inserted 表来确定触发器是否应该执行以及如何执行,在inserted 表中记录的数据总是触发器表中一行或者多行记录的冗余数据。
2、2.DELETE 触发器的工作原理当在表中删除记录的时候,DELETE 触发器自动执行,被删除的记录存放在deleted 表中。 Deleted 表时一个逻辑表,用来保存从表中删除的记录。3.UPDATE 触发器工作原理当修改表中的一条记录时,UPDATE 触发器就会自动执行。执行一条 UPDATE语句相当于执行一条 DELETE 语句和一条 INSERT 语句,当修改表中的一条记录后,表中原来的记录移动到 deleted 表中,修改后的记录存储到 INSERTED表中。触发器通过检查 deleted 表和 inserted 表盒被修改的表来确定是否修改了行内容以及如何执行触发器。三、实验要求
3、:(1)触发器的创建与执行。(2)学会使用触发器.(3)了解触发器与约束的比较。四、实验内容1、设计一个简单的 AFTER INSERT触发器,这个触发器的作用是:在插入一条记录的时候,发出“又添加了一个学生的成绩”的友好提示。 2、在 score表中创建触发器,在向 score表中插入数据时,先检待插入的数据中的 sno和 cno是否存在于 student表和 course表中,如果不存在则不允许插入。3、创建一个触发器,当删除 student表中的数据时,需要判断该数据对应的学生是否有选课,如果有,也需要将其选课信息全部删除。4、在 score表上创建一个 instead of inser
4、t触发器,实现:当向表 score插入记录时检查分数的合理性,如果不合理就不进行插入操作,否则允许。5、在 score表上创建一个 instead of delete触发器,实现:当从表 score删除记录时检查各课程的成绩是否为空,如果为空就不允许进行删除操作,否则允许。6、在 score表上创建一个 instead of update触发器,实现:当从表 score更新记录时检查当前用户是否是 dbo,如果不是 dbo就不允许进行更新操作,否则允许。五、实验结果及分析附 student score、stock 、sell 表信息CREATE TABLE student(sno char(9
5、) ,sname char(20),ssex char(2) ,sage smallint,sdept char(20) )create table score(sno char(9),cno int,grade int)create table stock(prod_id char(10),prod_name varchar(10),unit_price int,stock_amount int,modified_date datetime)create table sell(order_id int identity(1,1),prod_id char(10),sell_amount int,sell_date datetime,Saler varchar(10)