网络数据库--触发器.pptVIP

  • 8
  • 0
  • 约3.94千字
  • 约 10页
  • 2018-04-29 发布于河南
  • 举报
网络数据库--触发器

触发器 触发器本章内容:触发器的概念、创建触发器、管理触发器、修改触发器、删除触发器和存储过程和触发器在维护数据完整性中的作用 重点:创建触发器和管理触发器 难点:创建触发器 触发器 一.触发器的概念 (一)定义 触发器可以看作是一类特殊的存储过程,存储过程是通过存储过程名被调用执行的,而触发器主要是通过事件触发而被执行的。即它在满足某个特定条件时自动触发执行。 触发器是为表上的更新、插入、删除操作定义的,也就是说当表上发生更新、插入或删除操作时触发器将执行。 每个触发器通常有三个通用的部分:名称,动作,执行(通常含有一个存储过程或批处理)。触发器的动作可以是INSERT、UPDATE或DELETE语句。触发器的执行部分通常含有一个存储过程或批处理。不允许使用参数,也不能被直接调用,只能由系统自动激活。 (二)触发器的作用 它的作用就是强制执行业务规则。 (三)触发器的用途 1. 触发器可以通过级联的方式对相关的表进行修改。比如,对父表的修改,可以引起对子孙表的一系列修改,从而保证数据的一致性和完整性。 2. 触发器可以禁止或撤消违反参照完整性的修改。 3. 触发器可以强制比用CHECK约束定义更加复杂的限制。 触发器 (四)触发器是依附于表的数据库对象 ? 一个触发器和三部分内容有关: 1.定义触发器的表 2.激活触发器的数据操作语句 3.触发器要采取的动作? SQLServer为每个触发器都创建了两个专用表:inserted和deleted表。这是两个逻辑表,用户不能对它们进行修改。这两个表的结构与被触发器作用的表的结构相同。触发器执行完毕后,与该触发器相关的这两个表也会被删除。 当执行insert语句时,inserted表存放要向表中插入的所有行。 当执行delete语句时,deleted表存放要从表中删除的所有行。 当执行update语句时,相当于先执行一个delete操作,再执行一个insert操作。所以旧的行首先被移动到deleted表,然后新的行插入激活触发器的表和inserted表。 触发器的种类:SQL Server 2000支持两种类型的触发器:AFTER触发器和INSTEAD OF触发器,其中,AFTER触发器只能在表上定义,不能在视图上定义;INSTEAD OF可以在视图上创建。但只能为每个出发操作定义一个INSTEAD OF触发器。 触发器 1.使用T-SQL语句创建触发器 创建触发器使用CREATE TRIGGER语句。 语法格式如下: CREATE TRIGGER trigger_name ON table FOR { INSERT | UPDATE | DELETE } AS [IF UPDATE(column) [{AND | OR} UPDATE(column)…]] sql_statement s?trigger_name:给出了触发器的名称; s?table:说明了定义触发器的表或视图; s?FOR { INSERT | UPDATE | DELETE }:说明了激活触发器的数据操作语句; s?IF UPDATE(column):对应于UPDATE类触发器,说明如果更新某(些)列则做如何处理; s?sql_statement:触发器所要执行的SQL语句,它可以是一组SQL语句,可以包含流程控制语句等。 触发器 在CREATE TRIGGER语句中不能使用SELECT语句返回对表格查询的数据,因为触发器不接受用户应用程序传递的参数,从而也无法向用户应用程序返回查询表格数据所得到的结果。 在创建触发器的语句中,禁止使用下列T-SQL语句: ALTER DATABASE ALTER PROCEDURE ALTER TABLE ALTER TRIGGER ALTER VIEW CREATE DATABASE CREATE DEFAULT CREATE INDEX CREATE PROCEDURE CREATE RULE CREATE TABLE CREATE TRIGGER DROP DATABASE DROP DEFAULT DROP INDEX DROP PROCEDURE DROP RULE DROP TABLE DROP TRIGGER DROP VIEW GRANT RESTORE DATABASE RESTORE LOG REVOKE TRUNCATE TABLE 由于系统表所存储数据的特殊性和重要性,所以建议用户不要自己在系统表上建立触发器。 在创建触发器时,不允许RETURN返回体现运行状态的数据。 触发器 例:创建一触发器,要求每当在student表中修改数据时,将向客户端显示一条“记录已经修改!”的消息。 Use Xk go Create trigger Test

文档评论(0)

1亿VIP精品文档

相关文档