1 / 23
文档名称:

第 9章 触发器.ppt

格式:ppt   页数:23
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第 9章 触发器.ppt

上传人:中国课件站 2011/10/11 文件大小:0 KB

下载得到文件列表

第 9章 触发器.ppt

文档介绍

文档介绍:第9章触发器
触发器的概念
触发器的种类与工作原理
创建触发器
查看、修改触发器
删除触发器
触发器的概念
SQL Server中除可以使用约束和规则强制实施数据完整性外,还可以使用触发器实现数据的完整性。
触发器(TRIGGER)是一种实施数据完整性的特殊类型存储过程,它不同于前面介绍过的存储过程,兼有强制参照完整性和存储过程的双重特性。在对表执行UPDATE、INSERT、DELETE命令时,SQL Server就会自动触发执行触发器所定义的SQL语句,从而确保对数据的处理必须符合由这些SQL语句所定义的规则,这相当于执行了一个存储过程。但触发器与一般的存储过程又有不同,存储过程是数据库对象,一般由用户直接调用执行(除自动执行存储过程);而触发器依赖于数据表,只能通过操作UPDATE、INSERT、DELETE等命令触发,用户不能直接调用执行。
第 9章
触发器
<
>
触发器的概念
触发器的主要功能是能够实现由主键与外键所不能保证的复杂的参照完整性和数据的一致性。此外,还有以下功能:
(1)强化约束。触发器能够实现比CHECK 语句更为复杂的约束。
(2)跟踪执行。触发器可以侦测数据库中内在的操作,从而不允许未经许可的插入、更新和删除操作影响数据库。
(3)级联运行。触发器可以侦测数据库内的操作,并自动地级联影响整个数据库中的各项内容。
(4)存储过程的调用。为了响应数据库更新,触发器可以调用一个或多个存储过程。
因此,触发器可以解决高级形式的业务规则或复杂的行为限制以及实现定制记录等方面的问题。触发器能够根据某表数据修改前后状态所发生的差异,执行相应的处理。同时一个表的同一类型(INSERT、UPDATE、DELETE)的多个触发器能够对同一种数据操作采取多种不同的处理。
第 9章
触发器
<
>
触发器的种类与工作原理
触发器的种类
SQL Server 2000支持两种类型的触发器:AFTER触发器和INSTEAD OF触发器。
l      AFTER 触发器
AFTER 触发器即为SQL Server 2000版本以前所介绍的触发器。该类型触发器要求只在执行了某一操作(INSERT、UPDATE、DELETE)之后,触发器才被触发,且只能在表上定义。可以为针对表的同一操作定义多个触发器。对于AFTER触发器,可以定义哪一个触发器被最先触发,哪一个被最后触发,通常使用系统过程sp_settriggerorder 来完成此任务。
l      INSTEAD OF触发器
INSTEAD OF触发器表示并不执行命令所定义的操作(INSERT、UPDATE、DELETE),而仅是执行触发器中定义的代码。它既可在表上定义,也可以在视图上定义,但对同一操作只能定义一个INSTEAD OF触发器。
第 9章
触发器
<
>
触发器的种类与工作原理
触发器的工作原理
当向表执行INSERT、UPDATE或DELETE语句时,若该表设置了触发器,则SQL Server将根据不同的操作自动生成一个或二个临时表:Inserted表或Deleted表,同时将操作数据送入触发器表、Inserted表或Deleted表中。
Inserted表和Deleted表是SQL Server为触发器语句创建的逻辑表,存储在内存中,不是存储在数据库中,因此不允许用户直接对其修改。它们的结构与定义触发器相关表的结构相同,用于保存用户操作可能改变的行的新值或旧值,由系统自动维护。当触发器工作完成后,与之相关的逻辑表将自动删除。
第 9章
触发器
<
>
创建触发器
触发器既可以使用T-SQL语句创建,也可以在企业管理器中创建。
创建触发器时,需要确定触发器的以下三个组成部分:
l  确定在其上定义触发器的表;
l 触发器将何时激活。指明激活触发器的数据修改语句,有效选项为INSERT、UPDATE 或DELETE。多个数据修改语句可激活同一个触发器;
l 执行触发操作所执行的T-SQL语句。
第 9章
触发器
<
>
创建触发器
使用T-SQL语句创建触发器
创建触发器的CREATE TRIGGER语句的语法格式如下:
CREATE TRIGGER trigger_name
ON table_name | view_name
[ WITH ENCRYPTION ]
{ { { FOR | AFTER | INSTEAD OF } { [INSERT][,] [DELETE][,][UPDATE] }
  [ NOT FOR REPLICATION ]
  AS
   [ { I