或UPDATE语句时,指定的数据行从基本表中删除,然后被转移到了deleted表中。
在基本表和deleted表中一般不会存在相同的数据行。
▪一个UPDATE操作实际上是由一个DELETE操作和一个INSERT操作组成的。
在执行UPDATE操作时,旧的数据行从基本表中转移到deleted表中,然后将新的数据行同时插入基本表和inserted表中。
实验主要任务:
导入学生成绩数据库,并建立相关表的关系,对数据库实施如下操作:
一、利用SQL Server管理控制台创建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之间。
create trigger TR_ScoreCheck
on成绩
for insert,update
as
if(select成绩from inserted)between 0 and 100
begin
print'你成功的对成绩表插入(更新)了一条记录'
end
else
begin
print'(插入)更新的成绩数据错误'
rollback transaction
end
在创建了TR_ScoreCheck触发器之后,在查询窗口中输入以下SQL语句验证:
(独立完成:4.创建一个AFTER触发器,要求实现以下功能:在2003学生名单表上创建一个插入、更新类型的触发器TR_Sex_Check,当在性别字段中插入或修改性别后,触发该触发器,检查性别是否是‘男’或‘女’,并验证)
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER trigger [TR_Sex_Check]
on [dbo].[学生名单]
for insert,update
as
if(select性别from inserted)in('男','女')
begin
print'插入(更新)数据'
end
else
begin
print'插入或更新的性别错误'
rollback transaction
end
(二)实现层叠修改
5.创建一个AFTER触发器,要求如下:在学生表上创建一个删除类型的触发器TR_Stu_Delete,当在学生表中删除某一条记录后,触发该触发器,在成绩表中删除与此学号对应的记录。
create trigger TR_Stu_Delete
on学生
for delete
as
begin
delete
from成绩
where学号=(select学号from deleted)
end
在创建了TR_Stu_Delete触发器之后,在查询窗口中输入以下SQL语句验证:
(独立完成:6.创建一个AFTER触发器,要求实现以下功能在2003班级表上创建一个删除类型的触发器TR_Class_Delete,当在2003班级表中删除某一条记录后,触发该触发器,在2003学生名单中删除与此学号对应的记录。
并验证)
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER trigger [TR_Class_Delete]
on [dbo].[班级]
for delete
as
begin
delete
from学生名单
where班级=(select班级from deleted)
end
三、使用Transact-SQL语句创建DML的前(INSTEAD OF)触发器
7.创建一个INSTEAD OF触发器,要求实现以下功能:在课程表上创建一个删除类型的触发器TR_NotAllowDelete,当在课程表中删除记录时,触发该触发器,显示不允许删除表中数据的提示信息。
在创建了TR_Stu_Delete触发器之后,在查询窗口中输入以下SQL语句验证:
四、查看和修改触发器
(一)利用SQL Server管理控制平台查看
8.使用SQL Server管理控制台查看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.用系统命令DROP TRIGGER 触发器名删除TR_Course_Inser
利用商品销售练习数据库阅读下面的插入存储器、触发器实例,并把代码敲入自己的界面上熟悉:
数据库【商品销售练习】关系图
1.报告格式和内容要求:
a. 内容和格式整齐。
大标题采用黑体四号字加粗,小标题采用小四号字加粗。
正
文采用五号宋体,单倍行距。
b. 贴图时请剪裁到适当大小,要保证打印时可以看清,但也不要太大以免“越界”。
c. 不要在报告中写与实验无关的话,内容要有条理、完整、并能突出重点,要将
遇到的主要问题说明。
2.文件格式要求:
a. 将实验成果放入一个文件夹中,文件夹的内容包括:本实验报告、分离后的数
据库、如有查询代码(.sql文件)和其它文件也一并放入。
b. 文件夹以“学号姓名班级_S11”为文件名。
注意:你的学号放在姓名前。
c. 注意:所有文件保存后关闭,然后打包成RAR文件,以免提交的内容丢失或打
不开。
3.提交方式和时间:一周内完成。
可以将文件包发到我邮箱dah1225126.。
4.主动查阅资料,坚持自己亲手完成实验,弄清每个步骤和相关原理。