数据库系统概论实验报告五

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

山西大学计算机与信息技术学院实验报告

图5-1 图5-2

例1:

当输入Insert into Student1 values (200724108,’王阳’,‘男’, 36, ‘计算机’);

建立的触发器执行了其功能,执行结果为

例2:

create trigger ss

on student

for insert

as

begin

declare @xh smallint;

select @xh=inserted.Sage

from inserted;

if exists(select Sno from student where Sage=@xh) update student set sage=@xh+1 where Sage=@xh; end;

当执行以下语句时

use TestDB

insert into student

values('200515124','zp','男',20,'ma'); 结果中Sage为20的元组都加上了1。

例3:

创建触发器如下:

触发器所产生的效果:

例4:

创建触发器:

执行SQL语句:

结果使student表中的所有元组的sage均变为20:

思考题

在数据库Company_Data的表"项目数据表"和"员工数据表"中分别创建触发器。

(1)打开查询编辑器。

(2)在查询窗口书写CREATE TRIGGER语句,基于表"员工数据表"创建AFTER

INSERT 触发器Tigger_NewEmployeeSalary,将插入员工的工资额限制在

5000以内。

use TestDB

GO

CREATE TRIGGER Trigger_NewEmployeeSalary

ON员工数据表

AFTER INSERT

AS

IF(SELECT工资FROM inserted)> 5000

BEGIN

PRINT'新员工工资不能超过'

ROLLBACK

END

GO

点执行后触发器创建成功。

在查询编辑器中写如下语句,用于测试上述触发器是否起作用:

insert into Employee (编号,工资)values(10,6000);

点击执行后会提示以下信息(说明触发器已起到作用)

(3)在查询窗口书写CREATE TRIGGER语句,基于表"员工数据表"创建AFTER UPDATE触发器Trigger_SalaryChange,将员工工资变动额限制在2000以内。

CREATE TRIGGER Trigger_SalaryChange

ON员工数据表

AFTER UPDATE

AS

IF UPDATE(工资)

BEGIN

IF(SELECT MAX(ABS(inserted.工资- deleted.工资))

FROM inserted JOIN deleted

ON inserted.编号= deleted.编号)> 2000

BEGIN

PRINT'工资变动不能超过'

ROLLBACK TRANSACTION

END

END

点击执行后触发器就创建成功了。

在查询编辑器中写如下语句,用于测试上述触发器是否起作用:

Update 员工数据表set工资=10000 where姓名='李四';

四、实验结果及分析:

1、通过实验了解了触发器的触发过程和类型,掌握创建触发器的方法,能够根据题目要求设计出触发器。

2、在创建触发器中,系统会临时生成一个inserted或deleted表,对触发器的一些操作都用到这些表。

教师

评语

相关文档
最新文档