1 / 11
文档名称:

函数触发器和事务管理数据库实验报告.docx

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

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

分享

预览

函数触发器和事务管理数据库实验报告.docx

上传人:新起点 2021/7/26 文件大小:340 KB

下载得到文件列表

函数触发器和事务管理数据库实验报告.docx

文档介绍

文档介绍:数据库原理实验报告
学号: xxxxxxx 班级: xxxxxx 姓名: xxx 授课教师:xxxx
实验七 函数、触发器和事务管理(2学时)
一.实验目的
1. 掌握数据库函数的设计和使用方法;
2.掌握数据库触发器的设计和使用方法;
3. 了解SQL Server中数据库事务的定义机制
二、参考知识点:
在SQL Server中创建存储过程的SQL语句的一般格式是:
注意:SQL Server中局部变量名必须以@开头,全局变量名必须以@@开头。
定义函数:
CREATE FUNCTION 函数名(参数列表)
RETURNS 返回值数据类型
[AS]
BEGIN
SQL语句(必须有return 变量或值)
END
执行函数:
SELECT 函数名(参数列表)
删除函数:
DROP FUNCTION 函数名
三.实验内容(以下实验报告内容包括所执行的SQL语句、关键步骤的文字说明和相关屏幕截图)
基于“”文件构建学生管理数据库并插入数据,数据库名为 db_*。其中*表示“你们姓名的拼音”(例如吕杰的为“db_lvjie”)。数据库db_*包含下列3个表,分别为学生信息表student,课程信息表course,学生选课信息表sc。注意:为了防止外键约束影响以下部分题的完成,此次创建数据库的sql脚本中将course表的copn字段和cpno字段上的外键约束删除了;同时还将sc表中的外键约束删除了。数据库构建完成后请完成以下实验题。
函数设计和使用方法
利用Transact-SQL定义函数checkGrade,该函数接收用户的分数作为输入参数***@grade,并返回该分数是否及格。
create function checkGrade(***@grade int )
returns char(25)
as
begin
declare ***@b char(25)
if ***@grade >=60
set ***@b='及格'
else
set ***@b='不及格'
return ***@b
end
执行checkGrade函数,分别判断54分和89分是否及格。
declare ***@result char(25)
select ***@result=(54 )
print ***@result
declare ***@result1 char(25)
select ***@result1=(89 )
print ***@result1
删除checkGrade函数。
drop function checkGrade
触发器的设计和使用方法
给student表创建一个名为trigger_student_insert的触发器,当插入的学生记录中Sage字段的值不是18至25之间的数值时,就激活该触发器,撤销该插入操作,并给出错误提示。
提示:本题涉及在student表上创建一个针对insert操作的after类型的触发器,判断刚插入记录的Sage字段值可参考如下代码:
create trigger trigger_student_insert1 on student
after insert
as
if exists(select * from inserted where Sage >=18 and Sage <=25)
print '添加成功'
else
begin
print'无法添加'
rollback transaction
end

trigger_student_insert触发器创建成功后,试着分别向student表中插入以下两条元组,测试该触发器的执行情况,并给出实验结果。
在course表上创建一个名为trigger_course_insert的instead of类型的触发器,使之拒绝执行course表上的insert操作,并输出‘对不起,不可以向course表中插入数据!’。
create trigger trigger_course_insert on course
instead of insert
as
begin
print '不可以向course表中插入数据'
end
drop trigger trigger_course_insert
试着用insert语句向course表插入元组,测试trigger_cour