第10章 触发器的创建和使用——例题解答

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第10章触发器的创建和使用——例题解答
例10-2-1:创建一个INSERT触发器“TR_Stu_Insert”,当在T_STUDENT表中插入一条新记录时,触发该触发器,并给出“你插入了一条新记录!”的提示信息。

实现本题的方法如下:
步骤一:在SQL Server管理控制台中,展开STUDENT数据库,右击T_STUDENT表中的“触发器”文件夹。

从弹出的快捷菜单中选择“新建触发器”选项。

步骤二:单击“查询”菜单中的“指定模板参数的值”菜单项,在“指定模板参数的值”对话框中,将参数“Schema_Name”的值修改为“dbo”,参数“Trigger_Name”的值修改为“TR_Stu_Insert”,参数“Table_Name”的值修改为“T_STUDENT”,参数“Data_Modification_Statements”的值修改为“INSERT”。

单击“确定”按钮。

步骤三:在新建触发器模板窗口中,在BEGIN和END语句之间输入以下3条语句:DECLARE @msg char(30)
SET @msg='你插入了一条新记录!'
PRINT @msg
步骤四:单击工具栏上的“执行”按钮,即可完成此触发器的创建。

例10-2-2:创建了Stu_Insert触发器后,查看向T_STUDENT表中插入数据时,此触发器所完成的功能。

在SQL Server管理控制台中新建一个查询,并输入以下SQL语句:
USE STUDENT
GO
insert into T_STUDENT
(S_NUMBER,S_NAME,SEX)
values('0554115','王小帆','女')
GO
例10-2-3:创建一个AFTER触发器,要求实现以下功能:在T_SCORE表上创建一个
SQL Server 2005实用教程
插入、更新类型的触发器TR_ScoreCheck,当在SCORE字段中插入或修改考试分数后,触发该触发器,检查分数是否在0-100之间。

程序清单如下:
USE STUDENT
GO
CREATE TRIGGER TR_ScoreCheck
ON T_SCORE
FOR INSERT, UPDATE
AS
IF UPDATE(SCORE)
PRINT 'AFTER触发器开始执行……'
BEGIN
DECLARE @ScoreValue real
SELECT @ScoreValue=(SELECT SCORE
FROM inserted)
IF @ScoreValue>100 OR @ScoreValue<0
PRINT '输入的分数有误,请确认输入的考试分数!'
END
GO
例10-2-4:创建一个AFTER触发器,要求如下:在T_STUDENT表上创建一个删除类型的触发器TR_Stu_Delete,当在T_STUDENT表中删除某一条记录后,触发该触发器,在T_SCORE表中删除与此学号对应的记录。

USE STUDENT
GO
IF EXISTS(SELECT name FROM sysobjects
WHERE name ='TR_Stu_Delete' AND type = 'TR')
DROP TRIGGER TR_Stu_Delete
GO
CREATE TRIGGER TR_Stu_Delete
ON T_STUDENT
FOR DELETE
AS
PRINT '删除触发器开始执行……'
第10章触发器的创建和使用
DECLARE @StuNum char(10)
PRINT '把在T_STUDENT表中删除的记录的S_NUMBER赋值给局部变量@StuNum。

'
SELECT @StuNum=S_NUMBER
FROM deleted
PRINT '开始查找并删除T_SCORE表中的相关记录……'
DELETE FROM T_SCORE
WHERE S_NUMBER=@StuNum
PRINT '删除了T_SCORE表中的学号为'+RTRIM(@StuNum)+ '的记录。

'
GO
例10-2-5:创建一个INSTEAD OF触发器,要求实现以下功能:在T_COURSE表上创建一个删除类型的触发器TR_NotAllowDelete,当在T_COURSE表中删除记录时,触发该触发器,显示不允许删除表中数据的提示信息。

程序清单如下:
USE STUDENT
GO
IF EXISTS(SELECT name FROM sysobjects
WHERE name ='TR_NotAllowDelete' AND type = 'TR')
DROP TRIGGER TR_NotAllowDelete
GO
CREATE TRIGGER TR_NotAllowDelete
ON T_COURSE
INSTEAD OF DELETE
AS
PRINT 'INSTEAD OF 触发器开始执行……'
PRINT '本表中的数据不允许被删除!不能执行删除操作!'
GO
例10-3-1:使用系统存储过程查看TR_Stu_Insert触发器的一般信息。

程序清单如下:
USE STUDENT
GO
sp_help 'TR_Stu_Insert'
SQL Server 2005实用教程
GO
例10-3-2:使用系统存储过程查看T_STUDENT表涉及到的所有触发器。

程序清单如下:
USE STUDENT
GO
sp_depends 'TR_Stu_Delete'
GO
例10-3-3:使用系统命令删除TR_Stu_Insert触发器。

USE STUDENT
GO
DROP TRIGGER TR_Stu_Insert
GO。

相关文档
最新文档