1 / 11
文档名称:

实验六-存储过程和触发器.doc

格式:doc   大小:6,306KB   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验六-存储过程和触发器.doc

上传人:幸福人生 2022/2/22 文件大小:6.16 MB

下载得到文件列表

实验六-存储过程和触发器.doc

文档介绍

文档介绍:实验六-存储过程和触发器
实验六 存储过程和触发器
一、目的与要求
掌握编写数据库存储过程的方法。
掌握建立数据库触发器的方法,通过实验观察触发器的作用和触发条件设置等相关操作。
二、实验准备
了解编写存储过程实践课程的学生人数。
注:“人数”和“人次数”是不同的,对某一学生而言,如果参与了多门实践课程,则“人次数”是指其参与的课程门数,而“人数”仍为1。
触发器

触发器名为tr_sc,功能要求:审计在s_c_info表中对score字段的更新和插入操作,将这些操作记录到sc_log表中,sc_log表中有如下字段:操作类型type,学号st_id,课程号c_no,旧成绩oldscore,新成绩newscore,操作员uname,操作时间udate,其中操作员设定默认值为user,操作时间默认值为系统时间。
create table sc_log
(type varchar(4),
st_id varchar(10),
c_no varchar(10),
oldscore int,
newscore int,
uname varchar(10) default user,
udata datetime default getdate()
)
go
create trigger tr_sc
on s_c_info
for insert,update
as
if update(score)
begin
if(select count(*) from deleted)<>0
insert into sc_log(type,st_id,c_no,oldscore,newscore)
select 'update',,,,
from s_c_info,inserted i,deleted d
where = and =
else
insert into sc_log(type,st_id,c_no,newscore)
select 'insert',st_id,c_no,score
from inserted
end
go
在s_c_info表上建立一个触发器tr_updasc,用于监控对成绩的更新,要求更新后的成绩不能比更新前低,如果新成绩低则取消操作,给出提示信息,否则允许更新。
create trigger tr_updasc
on s_c_info
after update
as
declare ***@cj1 int,***@cj2 int
select ***@cj1= from deleted
select ***@cj2= from inserted
if(***@cj2<***@cj1)
begin
raiserror('新成绩比老成绩低,取消操作',16,1)
rollback transaction
end
go
(三)查看存储过程和触发器的信息

sp_help tr_sc
go
sp_help tr_updasc
go

sp_helptext tr_sc
go
sp_helptext tr_updasc
go
四、思考与练****br/>1.存储过程如何加密?
Create procedure encrypt_this
With encryption --加密,在存储过程添加这一语句即可
AS
Select* from user_tb
GO
查看存储过程储存的文本:
Exec sp_helptext encrypt_this
下面是结果集:
The project’s comments have been encrypted. --对象已经被加密
2.触发器有什么好处和坏处?
使用触发器的好处:
1. 自动执行。触发器在对表的数据作了任何修改(比如手工输入或者应用程序的操作)之后立即被激活。
2. 级联更新。触发器可以通过数据库中的相关表进行层叠更改,这比直接把代码写在前台的做法更安全合理。
3. 强化约束。触发器可以引用其它表中的列,能够实现比CHECK约束更为复杂的约束。
4. 跟踪变化。触发器可