数据库实验-触发器实验

一、实验目的
1.掌握触发器的创建、修改和删除操作。
2.掌握触发器的触发执行。
3.掌握触发器与约束的不同。
二、实验环境
硬件平台:PC;
软件平台:Windows 7 / SQLSERVER 2008 R2;
三、实验内容
1、 在 Student 表中编写 insert 的触发器,假如每个班的学生不能超过 30 个,如果低于此数,添加可以完成;如果超过此数,则插入将不能实现。
数据库实验-触发器实验_第1张图片
2、 在 SC 表上编写 update 触发器,当修改 SC 表中的 Grade 字段时将其修改前后的信息保存在 SC_log 表中。
数据库实验-触发器实验_第2张图片
四、实验过程及结果

  1. 创建触发器
    (1)启动 SQL Server 查询编辑器,“S+学生学号”数据库。
    (2)在查询命令窗口中输入以下 CREATE TRIGGER 语句,创建触发器。为 SC(学生选课)表创建一个基于 UPDATE 操作和 DELETE 操作的复合型触发器,当修改了该表中的成绩信息或者删除了成绩记录时,触发器被激活生效,显示相关的操作信息。
--创建触发器
CREATE TRIGGER tri_UPDATE_DELETE_sc
ON SC
FOR UPDATE,DELETE
AS
--检测成绩列表是否被更新
IF UPDATE(成绩)
BEGIN
--显示学号、课程号、原成绩和新成绩信息
SELECT INSERTED.课程号,DELETED.成绩 AS 原成绩,
INSERTED.成绩 AS 新成绩
FROM DELETED ,INSERTED
WHERE DELETED.学号=INSERTED.学号
END
--检测是更新还是删除操作
ELSE IF COLUMNS_UPDATED( )=0
BEGIN
--显示被删除的学号、课程号和成绩信号
SELECT 被删除的学号=DELETED.学号,DELETED.课程号,
DELETED.成绩 AS 原成绩
FROM DELETED
END
ELSE
--返回提示信息
PRINT „ 更新了非成绩列!‟

(3)点击快捷工具栏上的快捷按钮,完成触发器的创建。
数据库实验-触发器实验_第3张图片
2. 触发触发器
(1)在查询命令窗口中输入以下 UPDATE SC 语句,修改成绩列,激发触发器。

UPDATE SC
SET 成绩=成绩+5
WHERE 课程号=‟101‟

数据库实验-触发器实验_第4张图片
(2)在查询命令窗口中输入以下 UPDATE SC 语句修改非成绩列,激发触发器。
UPDATE SC
SET 课程号=‟113‟
WHERE 课程号=‟103‟
数据库实验-触发器实验_第5张图片
(3)在查询命令窗口中输入以下 DELETE SC 语句,删除成绩记录,激发触发器。
DELETE SC
WHERE 课程号=‟102‟
数据库实验-触发器实验_第6张图片
3. 比较约束与触发器的不同作用期
(1)在查询命令窗口中输入并执行以下 ALTER TABLE 语句,为 SC 表添加一个约束,使得成绩只能大于等于 0 且小于等于 100。

ALTER TABLE SC
ADD CONSTRAINT CK_成绩
CHECK(成绩>=0 AND 成绩<=100)

数据库实验-触发器实验_第7张图片
(2)在查询命令窗口中输入并执行以下 UPDATE SC 语句,查看执行结果。

UPDATE SC
SET 成绩=120
WHERE 课程号=‟108‟

数据库实验-触发器实验_第8张图片
(3)在查询命令窗口中输入执行以下 UPDATE SC 语句,查看执行结果。

UPDATE SC
SET 成绩=90
WHERE 课程号=‟108‟

数据库实验-触发器实验_第9张图片
4. 删除新创建的触发器
(1)在查询命令窗口中输入 DROP TRIGGER 语句,删除新创建的触发器。

DROP TRIGGER tri_UPDATE_DELETE_sc

数据库实验-触发器实验_第10张图片
(2)点击快捷工具栏上的快捷按钮,删除触发器。
五、总结
··这次实验是有关触发器的操作。
··触发器是sql server提供给程序员和数据分析员来保证数据完整性的一种的方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。
··触发器可以查询其他表,而且可以包含复杂的SQL语句。触发器与存储过程的唯一区别是触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行。
··通过这次实验,我们做了触发器的创建、修改、和删除操作以及通过一定的操作去检验触发器功是否成功实现。我收获颇多。

你可能感兴趣的:(数据库,数据库实验-触发器实验)