数据库原理实验报告S数据库触发器的创建.docx
- 文档编号:11890143
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:17
- 大小:193.44KB
数据库原理实验报告S数据库触发器的创建.docx
《数据库原理实验报告S数据库触发器的创建.docx》由会员分享,可在线阅读,更多相关《数据库原理实验报告S数据库触发器的创建.docx(17页珍藏版)》请在冰点文库上搜索。
数据库原理实验报告S数据库触发器的创建
试验11数据库触发器建立
试验日期和时间:
.11.28
试验室:
软件工程室
班级:
12计科3
学号:
4122
姓名:
张翔
试验环境:
1.硬件:
内存4.00GB处理器2.50Hz
2.软件:
Windows7旗舰版MicrosoftSQLServer
试验原理:
1.了解触发器概念、和通常存放过程区分、触发器优点和使用标准。
2.掌握触发器创建、实施、查看、修改和删除方法。
一、触发器概念:
触发器是一个特殊类型存放过程。
通常存放过程经过存放过程名称被直接调用,而触发器关键是经过当某个事件发生时自动被触发实施。
触发器能够用于SQLServer约束、默认值和规则完整性检验,还能够完成难以用一般约束实现复杂功效。
当创建数据库对象或在数据表中插入统计、修改统计或者删除统计时,SQLServer就会自动实施触发器所定义SQL语句,从而确保对数据处理必需符合由这些SQL语句所定义规则。
触发器和引发触发器实施SQL语句被看成一次事务处理,假如这次事务未取得成功,SQLServer会自动返回该事务实施前状态。
使用触发器有以下优点:
▪触发器是自动实施,。
▪触发器能够经过数据库中相关表进行层叠更改,如能够在“学生表”中学号列上创建一个删除触发器,当删除“学生表”统计时,自动级联删除“成绩表”中个匹配行。
▪触发器能够强制限制。
这些限制比用CHECK约束所定义更复杂,与CHECK约束不一样是,触发器能够引用其她表中列。
触发器能够分为DML触发器和DDL触发器两种
▪DDL触发器用于响应多种数据定义语言(DDL)事件。
这些事件关键对应于Transact-SQL中CREATE、ALTER和DROP语句,以及实施类似DDL操作一些系统存放过程。
它们用于实施管理任务,并强制影响数据库业务规则。
▪DML触发器是在用户使用数据操作语言(DML)事件编辑数据时发生。
DML事件是针对表或视图INSERT、UPDATE或DELETE语句。
DML触发器有利于在表或视图中修改数据时强制业务规则,扩展数据完整性。
DML触发器又分为AFTER触发器和INSTEADOF触发器两种:
▪AFTER触发器:
这种类型触发器将在数据变动(INSERT、UPDATE和DELETE操作)完成以后才被触发。
能够对变动数据进行检验,假如发觉错误,将拒绝接收或回滚变动数据。
AFTER触发器只能在表上定义。
在同一个数据表中能够创建多个AFTER触发器。
▪INSTEADOF触发器:
INSTEADOF触发器将在数据变动以前被触发,并替换变动数据操作,而去实施触发器定义操作。
INSTEADOF触发器能够在表或视图上定义。
每个INSERT、UPDATE和DELETE语句最多定义一个INSTEADOF触发器。
二、创建触发器
1.使用SQLServer管理控制台创建DML触发器
在SQLServer管理控制台中,展开指定服务器和数据库,单击要创建触发器数据表,右击其中“触发器”文件夹。
从弹出快捷菜单中选择“新建触发器”选项,会出现新建触发器模板窗口,在新建触发器模板窗口中单击“查询”菜单中“指定模板参数值”选项,会弹出“指定模板参数值”对话框,能够在这里设置参数具体值。
2.使用Transact-SQL语句创建DML触发器
使用Transact-SQL语言中CREATETRIGGER命令也能够创建DML触发器:
CREATETRIGGER[schema_name.]trigger_nameON{table|view}
[WITH
AS{sql_statement[;][,...n]}
:
=[ENCRYPTION][EXECUTEASClause]
其中,各参数说明以下:
▪schema_name:
DML触发器所属架构名称。
▪trigger_name:
触发器名称。
▪table|view:
对其实施DML触发器表或视图。
▪WITHENCRYPTION:
对CREATETRIGGER语句文本进行加密处理。
▪EXECUTEAS:
指定用于实施该触发器安全上下文。
▪FOR|AFTER:
AFTER指定触发器仅在触发SQL语句中指定全部操作都已成功执行时才被触发。
不能对视图定义AFTER触发器。
▪INSTEADOF:
指定实施DML触发器而不是触发SQL语句。
▪{[DELETE][,][INSERT][,][UPDATE]}:
指定数据修改语句。
必需最少指定一个选项。
▪sql_statement:
触发条件和操作。
当创建一个触发器时必需指定以下几项内容:
▪触发器名称;
▪在其上定义触发器表;
▪触发器将何时激发;
▪实施触发操作编程语句。
注意DML触发器时生成两个幻表:
▪DML触发器能够使用两个特殊临时表,它们分别是inserted表和deleted表。
这两个表都存在于内存中。
它们在结构上类似于定义了触发器表。
▪在inserted表中存放着被INSERT和UPDATE语句影响新数据行。
在实施INSERT或UPDATE语句时,新数据行被添加到基础表中,同时这些数据行备份被复制到inserted临时表中。
▪在deleted表中存放着被DELETE和UPDATE语句影响旧数据行。
在实施DELETE或UPDATE语句时,指定数据行从基础表中删除,然后被转移到了deleted表中。
在基础表和deleted表中通常不会存在相同数据行。
▪一个UPDATE操作实际上是由一个DELETE操作和一个INSERT操作组成。
在实施UPDATE操作时,旧数据行从基础表中转移到deleted表中,然后将新数据行同时插入基础表和inserted表中。
试验关键任务:
导入学生成绩数据库,并建立相关表关系,对数据库实施以下操作:
一、利用SQLServer管理控制台创建DML触发器中INSERT触发器后(AFTER)触发器
1.利用SQL-SERVER管理控制台:
创建一个INSERT触发器“TR_Course_Insert”,当在课程表中插入一条新统计时,触发该触发器,并给出“你插入了一条新课程统计!
”提醒信息。
2.创建了TR_Course_Insert触发器后,查看向课程表中插入数据时,此触发器所完成功效。
二、使用Transact-SQL语句创建DML后(FOR、AFTER)触发器
(一)实现检验约束
3.创建一个AFTER触发器,要求实现以下功效:
在成绩表上创建一个插入、更新类型触发器TR_ScoreCheck,当在成绩字段中插入或修改考试分数后,触发该触发器,检验分数是否在0-100之间。
createtriggerTR_ScoreCheck
on成绩
forinsert,update
as
if(select成绩frominserted)between0and100
begin
print'你成功对成绩表插入(更新)了一条统计'
end
else
begin
print'(插入)更新成绩数据错误'
rollbacktransaction
end
在创建了TR_ScoreCheck触发器以后,在查询窗口中输入以下SQL语句验证:
(独立完成:
4.创建一个AFTER触发器,要求实现以下功效:
在学生名单表上创建一个插入、更新类型触发器TR_Sex_Check,当在性别字段中插入或修改性别后,触发该触发器,检验性别是否是‘男’或‘女’,并验证)
setANSI_NULLSON
setQUOTED_IDENTIFIERON
go
ALTERtrigger[TR_Sex_Check]
on[dbo].[学生名单]
forinsert,update
as
if(select性别frominserted)in('男','女')
begin
print'插入(更新)数据'
end
else
begin
print'插入或更新性别错误'
rollbacktransaction
end
(二)实现层叠修改
5.创建一个AFTER触发器,要求以下:
在学生表上创建一个删除类型触发器TR_Stu_Delete,当在学生表中删除某一条统计后,触发该触发器,在成绩表中删除与此学号对应统计。
createtriggerTR_Stu_Delete
on学生
fordelete
as
begin
delete
from成绩
where学号=(select学号fromdeleted)
end
在创建了TR_Stu_Delete触发器以后,在查询窗口中输入以下SQL语句验证:
(独立完成:
6.创建一个AFTER触发器,要求实现以下功效在班级表上创建一个删除类型触发器TR_Class_Delete,当在班级表中删除某一条统计后,触发该触发器,在学生名单中删除与此学号对应统计。
并验证)
setANSI_NULLSON
setQUOTED_IDENTIFIERON
go
ALTERtrigger[TR_Class_Delete]
on[dbo].[班级]
fordelete
as
begin
delete
from学生名单
where班级=(select班级fromdeleted)
end
三、使用Transact-SQL语句创建DML前(INSTEADOF)触发器
7.创建一个INSTEADOF触发器,要求实现以下功效:
在课程表上创建一个删除类型触发器TR_NotAllowDelete,当在课程表中删除统计时,触发该触发器,显示不许可删除表中数据提醒信息。
在创建了TR_Stu_Delete触发器以后,在查询窗口中输入以下SQL语句验证:
四、查看和修改触发器
(一)利用SQLServer管理控制平台查看
8.使用SQLServer管理控制台查看TR_Course_Insert触发器并查看与该触发器有依靠关系其她数据库对象
(二)使用系统存放过程查看触发器
能够使用系统存放过程sp_help、sp_helptext和sp_depends分别查看触发器不一样信息。
它们具体用途和语法形式以下:
sp_help:
用于查看触发器通常信息,如触发器名称、属性、类型和创建时间。
sp_help‘触发器名称’
sp_helptext:
用于查看触发器正文信息。
sp_depends:
用于查看触发器包含到全部表。
9.使用系统存放过程查看TR_Course_Insert触发器通常信息
10.使用系统存放过程查看TR_Stu_Delete触发器包含到全部表。
11.使用系统存放过程查看TR_Stu_Delete触发器正文信息
五、删除触发器
12.用系统命令DROPTRIGGER触发器名删除TR_Course_Inser
利用商品销售练习数据库阅读下面插入存放器、触发器实例,并把代码敲入自己界面上熟悉:
数据库【商品销售练习】关系图
用visio画关系图
1.)创建一个存放过程,它接收一个商品编号,显示该商品全部销售统计及销售总数量、金额总计值、现有库存等相关信息。
--打开数据库商品销售练习
USE商品销售练习
GO
--先查询商品编号为'005'学生信息
select*from商品销售where商品编号='005'
--实施刚刚创建存放过程Pro_各科成绩单
EXECPro_商品编号'005'
2.)创建一个触发器,能够在"商品销售"表中插入一条统计时(只输入"商品编号"和"商品数量")经过触发器作用,能自动填写该统计"商品编号"对应"商品名称"、"商品规格"、"单价"、"销售日期",能自动计算"金额"(=单价*数量)填入。
并实现库存不足报警。
在"商品销售"表中插入统计时,能依据"商品库存"表中对应商品统计"库存数量"进行检验,凡销售"数量"已超出库存数量商品统计不能插入,并显示现有库存量并提醒“库存不足”/“库存空”,通常库存量低于最低库存量也提醒"现有库存量低于最低库量"。
创建触发器代码以下:
插入代码:
--插入一条统计
USE商品销售练习
GO
select*from商品库存where商品编号='005'
GO
select*from商品销售
GO
INSERTINTO商品销售(商品编号,数量)VALUES('005',18)
GO
select*from商品库存where商品编号='005'
GO
select*from商品销售
GO
将以上任务试验完成情况、试验结果、试验原理、总结分栏一一填写到下表中,格式参考任务1或者自定。
回复问题:
▪1.触发器与通常存放过程关键区分是什么?
▪触发器不一样于存放过程,触发器关键是经过事件实施触发而被实施,而存放过程能够经过存放过程名称名字而直接调用。
当对某一表进行诸如UPDATE、INSERT、DELETE这些操作时,SQLSERVER就会自动实施触发器所定义SQL语句,从而确保对数据处理必需符合这些SQL语句所定义规则
▪2.简述触发器分类及各自特点。
▪DML触发器,DDL触发器
▪3.使用触发器有哪些优点?
▪自动实施级联更新强化约束跟踪改变强制业务逻辑
小结:
(不少于100字)
你在完成查询任务过程中碰到问题及处理方法有:
要求:
1.汇报格式和内容要求:
a.内容和格式整齐。
大标题采取黑体四号字加粗,小标题采取小四号字加粗。
正文采取五号宋体,单倍行距。
b.贴图时请剪裁到合适大小,要确保打印时能够看清,但也不要太大以免“越界”。
c.不要在汇报中写与试验无关话,内容要有条理、完整、并能突出关键,要将碰到关键问题说明。
2.文件格式要求:
a.将试验结果放入一个文件夹中,文件夹内容包含:
本试验汇报、分离后数据库、如有查询代码(.sql文件)和其它文件也一并放入。
b.文件夹以“学号姓名班级_S11”为文件名。
注意:
你学号放在姓名前。
c.注意:
全部文件保留后关闭,然后打包成RAR文件,以免提交内容丢失或打不开。
3.提交方法和时间:
一周内完成。
能够将文件包发到我邮箱。
4.主动查阅资料,坚持自己亲手完成试验,搞清每个步骤和相关原理。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 实验 报告 触发器 创建
![提示](https://static.bingdoc.com/images/bang_tan.gif)