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

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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * 第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+ % IF(@count0) BEGIN PRINT 不能插入相同的类别名称 ROLLBACK TRANSACTI

您可能关注的文档

文档评论(0)

118压缩包课件库 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档