新SQL Server 2008数据库开发经典案例教程 电子教案习题解答等 吕玉桂 电子教案 第14章触发器.pptVIP

  • 11
  • 0
  • 约4.83千字
  • 约 20页
  • 2016-10-26 发布于广东
  • 举报

新SQL Server 2008数据库开发经典案例教程 电子教案习题解答等 吕玉桂 电子教案 第14章触发器.ppt

* * * 在线教务辅导网: 教材其余课件及动画素材请查阅在线教务辅导网 QQ:349134187 或者直接输入下面地址: 第14章 数据库触发器 本章目标 了解触发器的用途 理解触发器的工作原理 掌握如何使用inserted表和deleted表 掌握如何创建INSERT、UPDATE、DELETE触发器 触发器介绍 触发器是在数据库中发生事件时自动执行的特殊存储过程,这些事件主要是发生在表上的DML(INSERT,UPDATE,DELETE)操作 触发器与数据操作有关 在数据库服务器端实现业务规则和强制业务规则 存储过程实现业务规则 约束强制业务规则 强制业务规则 约束 触发器 触发器可以实现比约束更复杂的数据完整性 触发器的特点 触发器是在对表进行插入、更新或删除操作时自动执行的存储过程 触发器通过事件进行触发而被执行的 特点: 与表相关联 自动触发 不能直接调用 是事务的一部分 触发器的类型 DML触发器 DML 触发器是当数据库服务器中发生数据操作语言 (DML) 事件时要执行的操作。 DDL触发器 DDL 触发器是一种特殊的触发器,它在响应数据定义语言 (DDL) 语句时触发。 登录触发器 登录触发器将为响应 LOGON 事件而激发存储过程。 DML触发器的种类 AFTER触发器 AFTER触发器要求只有执行某一操作INSERT、UPDATE、DELETE之后触发器才被触发且只能在表上定义 INSTEAD OF触发器 可在表上定义INSTEAD OF 触发器,也可以在视图上定义INSTEAD OF 触发器 CLR触发器 CLR 触发器可以是 AFTER 触发器或 INSTEAD OF 触发器,它将执行在托管代码(在 .NET Framework 中创建并在 SQL Server 中上载的程序集的成员)中编写的方法,而不用执行 Transact-SQL 存储过程。 AFTER触发器 AFTER触发器包括: INSERT触发器:当向表中插入数据时触发,自动执行触发器所定义的SQL语句。 UPDATE触发器:当更新表中某列、多列时触发,自动执行触发器所定义的SQL语句。 DELETE触发器:当删除表中记录时触发,自动执行触发器所定义的SQL语句。 触发器的两个特殊表 插入表(inserted表) 删除表(deleted表): 这两个表是逻辑表,并且是由系统管理的,存储在内存中,不是存储在数据库中,因此,不允许用户直接对其修改。 inserted 和deleted 表 触发器触发时: 系统自动在内存中创建deleted表或inserted表 只读,不允许修改;触发器执行完成后,自动删除 inserted 表 临时保存了插入或更新后的记录行 可以从inserted表中检查插入的数据是否满足业务需求 如果不满足,则向用户报告错误消息,并回滚插入操作 deleted 表 临时保存了删除或更新前的记录行 可以从deleted表中检查被删除的数据是否满足业务需求 如果不满足,则向用户报告错误消息,并回滚插入操作 inserted 和deleted 表 修改操作 inserted表 deleted表 增加(INSERT)记录 存放新增的记录 ------ 删除(DELETE)记录 ----- 存放被删除的记录 修改(UPDATE)记录 存放更新后的记录 存放更新前的记录 inserted表和deleted表存放的信息 创建触发器 语法: CREATE TRIGGER trigger_name ON table_name [WITH ENCRYPTION] FOR [DELETE, INSERT, UPDATE] AS T-SQL语句 GO WITH ENCRYPTION表示加密触发器定义的SQL文本 DELETE, INSERT, UPDATE指定触发器的类型 插入触发器 问题:在类别表中插入数据时不能插入名称相似度比较高的类别,如:类别“数据库”和“数据库基础”我们认为是相似的名称,即前4个字符相同的类别判定为相同类别。 CREATE TRIGGER Insert_Category ON Category FOR INSERT AS DECLARE @name VARCHAR(20) DECLARE @count INT SELECT @name=categoryName FROM inserted SELECT @count=count(*) FROM Category WHERE substring(CategoryName,1,4) LIKE @name+ % I

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档