数据库作业3
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据库应用基础》实验报告
触发器
一、实验目的
⑴理解触发器的概念;
⑵掌握触发器的创建及应用。
二、实验内容:
1 在学生信息表stud_info上创建一个Delete触发器,要求Delete语句在被执行导致触发了触发器时取消删除操作。
2 在表stud_score中建立插入(Insert)触发器, 插入一条记录时,若英语成绩>100或者英语成绩<=0,拒绝插入记录并显示:“成绩不符合规定,无法插入此记录!”;
(选作)在表stud_score中建立删除触发器,实现表stud_score和表stud_info的级联删除。
三、实验环境
SQL Server2005、Windows XP
四、程序源码与运行结果
1
use my_db1
go
create trigger my_trigger1
on stud_info
instead of delete
as
raiserror('您无权进行删除操作',10,1)
执行下面的命令:
delete*from stud_info
where stud_id='811'
在查询分析器的结果窗口中将出现报错信息
2
use my_db1
go
create trigger my_trigger2
on stud_score
for insert《同样能改成instead of》
as
begin
if(select engl_score from inserted)>100
or(select engl_score from inserted)<=0
begin
raiserror('成绩不符合规定,无法插入此记录!',10,1)
rollback transaction
end
end
《for默认after。instead of在表中只能出现一个;在执行insert同时触发》
选做《错误》
alter table stud_score
add constraint constraint_1
foreign key(stud_id)
references stud_info
消息:命令已成功完成。
use my_db1
go
create trigger my_trigger3
on stud_score
for drop
as
alter table stud_score
drop constraint constraint_1
go
消息156,级别15,状态1,过程my_trigger3,第3 行
关键字'drop' 附近有语法错误。
五、实验总结
(1)实验中遇到的问题及解决过程
1、选做中如果有嵌套触发器,在第二个触发器中要是用了database 语句,则消息中将会出现“在过程、函数或触发器中不允许使用USE database 语句”。
并不清楚DDL触发器和DML触发器在操作上的区别,所以不知道什么地方出了错误。
2、表的级联是指不同表之间的主外键关系,维护表的级联可通过设置表的主键与外键的关系来实现
(2)实验体会和收获。
在学习中没有熟练掌握学习方法,没有正确的方向,只是盲目学习。要的其要领必须要自己自觉的学习。马虎对待学习,就是对自己的不负责,所以从现在做起,不能总找借口不学习,这是为自己而不是为别人。因此认真学习,会学好的。
- 1 -