实验四 触发器的建立与使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四触发器的建立与使用、授权和权限回收
1、针对student表写一个INSERT触发器,在插入记录时检查性别属性必须为“男”或“女”,否则报错。
执行INSERT操作,观察触发器的运行情况。
这道题的重点在于理解运用触发器的时候两个重要的表一个是inserted表,另一个就是Deleted表,本题中我们先从inserted表中提取出要插入的性别,然后判断如果是男或女就将本条记录插入到表中,否则阻止插入。
当用insert into student(sno,sname,ssex,sage,sdept) values('3837','阿加','d','19','计算机系')测试时出现
2、针对student表写一个INSTEAD of类型的UPDATE触发器,在记录被修改时拒绝操作。
执行UPDATE操作,观察触发器的运行情况。
本题要求触发器类型为INSTEAD of,而INSTEAD of类型的触发器是在更新之前就被激发的所以直接当要在表student上执行更新时直接不能操作
测试数据:update student set sage='2' where sno='0603001'
结果:
3、针对sc表写一个DELETE触发器,要求一次最多只能删除5条记录。
执行DELETE 操作,观察触发器的运行情况。
这里利用deleted表,因为删除的记录会暂时放到这里,统计这个表里的记录一共有多少条,如果大于5.就不允许删除。
测试语句:delete from sc where cno='2'
结果:
4、重命名第1题中的触发器。
本题比较简单,就是一个重命名的语句:
exec sp_rename insert_g,insert_g1
5、禁用第2题中定义的触发器。
alter table student disable trigger insert_gw
6、删除第3题中定义的触发器。
drop trigger insert_gwh
7、新建角色newrole,授予其对teaching数据库中三张表的查询和insert、delete权限。
create role newrole
grant insert,delete,select on student to newrole
grant insert,delete,select on sc to newrole
grant insert,delete,select on course to newrole
8、新建用户newuser,对其授予newrole角色。
新建用户之前要先定义一个登录名,这里我们设置用户名和登录名相同,然后运行create user newuser,然后将角色授予用户grant grant wang to newuser to newuser
9、对用户newuser授予对student表中sdept列的update权限。
grant update(sdept) on student to newuser
选作题:
1、设置一个触发器,该触发器仅允许“dbo”用户可以删除student表内数据的,否则出错。
2、设计一个触发器,若修改student表中的学生学号,则自动修改sc表中与该学生对应的相关记录的学号。
在student表上建立一个触发器,当修改student表上的学号时,定义两个变量,一个等于老的学号,一个等于新的学号,然后根据这两个变量修改sc表中的学号
测试语句:update student set sno='0608022' where sno='0608002' 结果:正确。