《数据库原理与应用》10.触发器的创建和使用.pptVIP

《数据库原理与应用》10.触发器的创建和使用.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文档。上传文档
查看更多
《数据库原理与应用》10.触发器的创建和使用

孙 发 勤 扬州大学新闻与传媒学院 YZU.SUN@163.COM 1、创建触发器 2 、查看、修改和删除触发器 3 、触发器的应用 触发器 触发器是一种特殊类型的存储过程,它不同于前面介绍过的存储过程。触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名称而被直接调用。触发器是一个功能强大的工具,它使每个站点可以在有数据修改时自动强制执行其业务规则。触发器可以用于 SQL Server 约束、默认值和规则的完整性检查。 SQL SERVER可以检查数据完整性的还有什么情况? 比如前面讲过的CHECK约束。但是,与CHECK约束相比,触发器可以强制实现更加复杂的数据完整性,而且可以参考其他表的字段。 注意:触发器可以扩展SQL Server约束、默认值和规则的完整性检查逻辑,但只要约束和默认值提供了全部所需的功能,就应使用约束和默认值。 触发器可以使用T一SQL语句进行复杂的逻辑处理,它基于一个表创建,但是可以对多个表进行操作,因此常常用于复杂的业务规则。工般可以使用触发器完成如下功能 触发器的作用 1、级联修改数据库中相关的表。 例如:在数据库company中有两个表project和customer,表project中包含项目信息和项目的合作客户名,而customer表中则存储所有客户的信息。如果删除了customer表中的某一客户,如张三,那么在project表中所有和该客户有关的项目记录都应该做相应的调整。如在project表中将所有合作客户为张三的字段改为null或者其它值,或者删除整条和张三有关的记录。而使用触发器就可以实现这样的功能。 2、执行比核查约束更为复杂的约束操作。 在触发器中可以书写更复杂的T一SQL语句,例如可以引用多个表,并使用if ... else等语句做更复杂的检查。 3、拒绝或回滚违反引用完整性的操作。 检查对数据表的操作是否违反引用完整性,并选择相应的操作。 4、比较表修改前后数据之间的差别,并根据差别采取相应的操作。例如:若想规定每次工资的变动幅度不能超过40%,使用触发器可以将修改后的表数据和修改前的表数据进行比较,若超出40%,可以回滚该修改操作。 触发器的类型 触发器可以分为五种类型: Update触发器:在表上进行更新操作时触发。 Insert触发器:在表上进行更新操作时触发 Delete触发器:在表上进行更新操作时触发 Instead of触发器:不执行插入、更新或删除操作时,将触发Instead of触发器。 After触发器:在一个触发动作发生之后激发,并提供一种机制以便控制多个触发器的执行顺序。 AFTER要求只有执行某一操作(INSERT,UPDATE、DELETE)之后触发器才被触发,且只能在表上定义。可以为针对表的同一操作定义多个触发器。对于AFTER触发器,可以定义哪一个触发器被最先触发,哪一个被最后触发,通常使用系统过程sp settriggerorder来完成此任务。 INSTEAD OF触发器表示并不执行其所定义的操作(INSERT、UPDATE、DELETE),而仅是执行触发器本身。既可在表上定义INSTEAD OF触发器,也可以在视图上定义INSTEAD OF触发器,但对同一操作只能定义一个INSTEAD OF触发器。 触发器主要优点如下: 触发器是自动的:当对表中的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。 触发器可以通过数据库中的相关表进行层叠更改。 触发器可以强制限制,这些限制比用 CHECK 约束所定义的更复杂。 创建触发器 创建触发器应该考虑以下几个问题: ①CREATE TRIGGER 语句必须是批处理中的第一个语句。 ②创建触发器的权限默认分配给表的所有者,且不能将该权限转给其他用户。 ③触发器为数据库对象,其名称必须遵循标识符的命名规则。 ④虽然触发器可以引用当前数据库以外的对象,但只能在当前数据库中创建触发器。 ⑤虽然不能在临时表或系统表上创建触发器,但是触发器可以引用临时表。 ⑥在含有用 DELETE 或 UPDATE 操作定义的外键的表中,不能定义 INSTEAD OF 和 INSTEAD OF UPDATE 触发器。 ⑦虽然 TRUNCATE TABLE 语句类似于没有 WHERE 子句(用于删除行)的 DELETE 语句,但它并不会引发 DELETE 触发器,因为 TRUNCATE TABLE 语句没有记录。 ⑧WRITETEXT 语句不会引发 INSERT 或 UPDATE 触发器。 ⑨当创建一个触发器时必须指定: ⑴名称;⑵在其上定义触发器的表;⑶触发器将何时激发;⑷激活触发器的数据修改语句。 下面的语句不可以用于创建触发器:

文档评论(0)

djdjix + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档