第十章触发器的创建与使用.ppt
文本预览下载声明
《数据库基础与应用》第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
显示全部