触发器实验

《数据库系统 》 实验报告

实验名称 触发器实验 实验地点 实验楼423 实验日期

一、实验目的及要求

  1. 掌握触发器的创建、修改和删除操作
  2. 掌握触发器的触发执行
  3. 掌握触发器与约束的不同

二、实验环境
Windows10,
SQL server2008
三、实验内容

  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(Grade)
BEGIN
SELECT INSERTED.Con,DELETED.Grade AS 原成绩,
INSERTED.Grade AS 新成绩
FROM DELETED ,INSERTED
WHERE DELETED.Sno=INSERTED.Sno
END
ELSE IF COLUMNS_UPDATED()=0
BEGIN
SELECT 被删除的学号=DELETED.Sno,DELETED.Con,
DELETED.Grade AS 原成绩
FROM DELETED
END
ELSE
PRINT ‘更新了非成绩列!’
(3) 点击快捷工具栏上的快捷按钮,完成触发器的创建。
2. 触发触发器
(1) 在查询命令窗口中输入以下UPDATE SC 语句,修改成绩列,激发触发器。
在这里插入图片描述

UPDATE SC
SET Grade=Grade+5
WHERE Con=‘101’
(2)在查询命令窗口中输入以下UPDATE SC 语句修改非成绩列,激发触发器。
在这里插入图片描述

UPDATE SC
SET Con=‘113’
WHERE Con=‘103’
(3)在查询命令窗口中输入以下DELETE SC 语句,删除成绩记录,激发触发器。
在这里插入图片描述

DELETE SC
WHERE Con=‘102’
3. 比较约束与触发器的不同作用期
(1)在查询命令窗口中输入并执行以下ALTER TABLE 语句,为SC 表添加一个约束,使得成绩只能大于等于0 且小于等于100。
在这里插入图片描述

ALTER TABLE SC
ADD CONSTRAINT CK_Grade
CHECK(Grade>=0 AND Grade<=100)
(2)在查询命令窗口中输入并执行以下UPDATE SC 语句,查看执行结果。
在这里插入图片描述

UPDATE SC
SET Grade=120
WHERE Con=‘108’
(3) 在查询命令窗口中输入执行以下UPDATE SC 语句,查看执行结果。
在这里插入图片描述

UPDATE SC
SET Grade=90
WHERE Con=‘108’
4. 删除新创建的触发器
(1) 在查询命令窗口中输入DROP TRIGGER 语句,删除新创建的触发器。
(2) 点击快捷工具栏上的快捷按钮,删除触发器。
在这里插入图片描述

DROP TRIGGER tri_UPDATE_DELETE_sc
1.在Student 表中编写insert 的触发器,假如每个班的学生不能超过30 个,如果低于此数,添加可以完成;如果超过此数,则插入将不能实现。
在这里插入图片描述

go
create trigger tr
on student
for insert,update
as
declare @sno numeric
select @sno=sno from Student
if(@sno>30)
begin
print’插入不成功’
rollback
end
else
print’插入成功’
2. 在SC 表上编写update 触发器,当修改SC 表中的Grade 字段时将其修改前后的信息保存在SC_log 表中。
在这里插入图片描述

go
create trigger tri_update
on sc
for update
as
if UPDATE(Grade)
insert into sc_log select* from deleted
insert into sc_log select* from inserted
四、实验总结
触发器我的理解就是人为设置一个‘异常陷阱’,当用户对表中数据进行增删改时,会激活促发其执行相应的操作,也算是对表中数据的一种约束。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值