



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验七:触发器的应用1、 实验目的l 掌握DML和DDL触发器的创建方法;l 掌握DML和DDL触发器的查看、修改、重命名和删除方法。2、 实验内容(1) 创建触发器(1) 创建一个当学生表中插入一个新同学信息时能自动列出全部同学学生信息的触发器Display_trigger;向学生表中插入一新同学信息,验证触发器Display_trigger是否被执行。 create trigger display_triggeron studentafter insertasbeginselect * from student end (2)创建一个触发器delete_trigger,当向学生表中删除同学信息时显示学生表中以下信息进行了删除操作:并将删除的的学生信息显示出来。验证触发器delete_trigger是否被执行。create trigger delete_trigger on studentafter deleteasbeginselect 学生表中以下信息进行了删除操作:select * from deletedend(3)创建一个DML触发器ins_sub_score,当对成绩表添加一条数据时,首先判断一下学号和课程号在学生表和课程表是否存在,若不在,拒绝插入。CREATE TRIGGER ins_course_score on course_score after insert ASBEGIN IF EXISTS(SELECT * FROM inserted a WHERE a.stu_id not in ( SELECT b.stu_id FROM students b ) or a.cour_id not in (SELECT c.cour_id FROM courses c) ) BEGIN RAISERROR(违背了数据的一致性,16,1) ROLLBACK TRANSACTION ENDELSERAISERROR(插入成绩记录成功!,16,10)ENDGO (4)在stusystem数据库中创建删除班级触发器remofve_class,作用是:如果要删除一个班级,则首先需要删除其他表中与该班级有关联的信息。即:删除cla_sub表中与该班有关的记录,也就是取消改班级与相关科目的关联关系;删除cla_tea表中与该班有关的记录,也就是取消改班级与教师的关联关系;删除student表中与该班有关的记录,也就是删除该班级的学生及achievement表中学生的成绩信息。create trigger remofve_class on classafter deleteasbegindelete cla_sub where claid in(select claid from deleted)delete cla_tea where claid in(select claid from deleted)delete achievement where stuid in (select stuid from student where claid in (select claid from deleted)delete student where claid in(select claid from deleted)end 验证触发器:delete class where claid=6注意:输入测试数据进行前后对比select * from class where claid=6select * from cla_sub where claid=6select * from cla_tea where claid=6select * from student where claid=6select * from achievement where stuid=9(2) 练习和管理触发器 建立数据库testdb,并在数据库中建立两个表:Txl(ID int, Name char(10), Age int);Person_ counts(Person_ count int)create table tx1(ID int, name char(10), Age int ) create table person_counts (p_count int)l 使用T-SQL编写一个触发器tr_person_ins,每当txl表中插入一行数据时,表Person_ counts中对应的数量也相应地发生变化。create trigger tr_person_ins on tx1after insertasbegin if (select p_count from person_counts) is null) insert into person_counts values(0)update person_counts set p_count=p_count+(select COUNT(*)from inserted)end执行触发器:insert into tx1 values(3,a,20)l 使用对象资源管理器创建一个触发器tr_person_del,每当txl表中删除记录时,表Person_ counts中对应的数量也相应地发生变化。create trigger tr_person_del on tx1after deleteasbegin if (select p_count from person_counts) =0) beginprint 人数已为returnendelseupdate person_counts set p_count=p_count-(select COUNT(*)from deleted)end执行触发器:delete tx1 where ID=2参考答案2:根据上述两题建立一个触发器,代码如下:create trigger tr_person_ins on tx1after insert,deleteasbegin declare n intif (select p_count from person_counts) is null) insert into person_counts values(0)select n=COUNT(*)from tx1update person_counts set p_count=nendl 使用对象资源管理器和T-SQL语句两种方法查看触发器tr_person_del的内容,并将该触发器的内容加密。 sp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 某著名企业上海浦东空港物流园区战略定位及业务模式分析咨询项目Presentation02
- 工业废水处理与河道水质改善关系研究
- 工业安全与智能制造的融合探讨
- 工业机器人与自动化流水线技术
- 工业污染防治中的大数据分析方法
- 工业废水处理的新技术与趋势
- 工业物联网技术解析
- 工业污染防治的先进技术
- 工业生产中的环保优化策略探讨
- 工业节能减排技术与措施
- 船舶建造项目管理-全面剖析
- 世界公民教育的发展趋势
- 成人PICC堵塞的预防及处理专家共识解读课件
- 2025年福建省龙岩市中考数学模拟卷 (原卷版+解析版)
- 煤矿顶板事故预防及应急处置知识培训课件
- 新疆乌鲁木齐市2024-2025学年八年级上学期期末生物学试题(含答案)
- 租户电梯使用协议书
- 土地整治项目管理
- 2025年中考历史开卷专题速查简表
- 某冶金机械厂全厂供电系统的电气设计 (一)
- 信用卡风险防控培训课件
评论
0/150
提交评论