数据库作业3

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 -

相关文档
最新文档