文档详情

第十章触发器的创建与使用.ppt

发布:2017-04-26约2.31千字共42页下载文档
文本预览下载声明
《数据库基础与应用》 第10章 触发器的创建和使用 ;相关知识回顾;触发器与存储过程、约束的关系;本章学习目标;第10章 触发器的创建和使用 ;10.1 概述 ;触发器的主要功能:;触发器的主要优点:;思考?;示例数据库Student的结构;项目:学籍管理系统;理解触发器的类型 ;(2)从执行时间来看,SQL SERVER有两类触发器: AFTER触发器: 触发器在触发它们的操作完成后执行。一张表中可以为每个触发操作(INSERT、DELETE和UPDATE)创建多个AFTER触发器。 INSTEAD OF触发器: 该触发器代替触发操作执行,原来的操作不再执行。一个表只能创建一个INSTEAD OF触发器。;Date;10.2 创建触发器 ;使用Transact-SQL语句创建触发器;任务1 创建insert触发器 ;方法一:用SQL语句创建触发器;方法一:用企业管理器创建触发器;如何验证触发器是否正常工作?;任务2 创建Delete触发器 ;提示:;触发器的执行原理(P214);任务3 创建Update触发器 ;分析;课后练习:创建触发器实现以下功能;10.3 查看、修改和删除触发器 ;10.3.1 查看触发器 ;10.3.2 修改触发器 ;2.修改触发器内容 (1)使用T-SQL修改触发器内容,语法格式如下: 语法格式: Alter TRIGGER 触发器名 ON 表名 { FOR | AFTER | INSTEAD OF } { [ DELETE] [,] [ INSERT ] [,] [ UPDATE ] } AS SQL语句块;(2)使用企业管理器修改触发器内容;10.3.3 删除触发器 ;(2)使用企业管理器删除触发器 在图所示的“触发器属性”对话框的“名称”下拉菜单中选择要删除的触发器名称(默认是“新建触发器”),然后单击【删除】按钮并确认。;10.4 综合实例;【例10-9】用户信息表Users中包含敏感的用户积分和用户等级信息,现在需要对其进行监控,如果更改了用户积分和用户等级,则需要生成审计记录并插入到审核表,记录更新前后的数据,并记录修改者的登录名和客户机名,以及修改时间。 【分析】: (1)产生跟踪敏感信息的审核表 (2)用户信息表Users上创建UPDATE触发器 (3)判断是否修改用户积分和用户等级,是则执行触发器内容;否则不做任何处理。 (4)从deleted临时表中获取修改前的数据,插入审核表。 (5)从inserted临时表中获取修改后的数据,插入审核表。 (6)使用 SUSER_SNAME()返回登录名。 (7)使用 HOST_NAME()返回工作站名称。 (8)使用 GETDATE() 返回修改时间。;代码如下: (1)产生跟踪敏感信息的审核表 CREATE TABLE auditUsers( audit_Id int identity(1,1) primary key, --审计编号,标识列 --审计数据类型:OLD为修改前数据,NEW为修改后数据 Auit_Type char(3) not null, Uid int not null, --记录修改的用户号 Upoint int null, --记录用户积分 UState int null, --记录用户等级 audit_user varchar(40) default SUSER_SNAME(), --记录修改者的登录号 audit_pc varchar(40) default HOST_NAME(), --记录修改者的客户机名 audit_time datetime default GETDATE() --记录修改发生时间 );(2)在用户信息表Users上创建UPDATE触发器 CREATE TRIGGER users_Update ON USERS FOR UPDATE as if update(Upoint) or update(ustate) begin insert into auditUsers(Auit_Type, Uid, Upoint, UState) SELECT OLD, del. Uid, del.Upoint, del.Ustate FROM DELETED del insert into auditUsers(Auit_Type, Uid, Upoint, UState) SELECT NEW, ins. Uid, ins.Upoint, ins.Ustate FROM INSERTED ins
显示全部
相似文档