- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十一章 管理触发器 触发器的概念 触发器的功能和类型 使用企业管理器创建和管理触发器 使用T-SQL创建和管理触发器 触发器的基本概念 触发器是一种特殊类型的存储过程,它不同于普通的存储过程。触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名称而被直接调用。当往某一个表格中插入记录、修改记录或者删除记录时,SQL SERVER就会自动执行触发器所定义的SQL语句,以确保数据的完整性。 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触发器:在一个触发动作发生之后激发,并提供一种机制以便控制多个触发器的执行顺序。 SQL Server2000新增的触发器 SQL Server 2000 新增了两种类型的触发器AFTER 触发器和INSTEAD OF 触发器。其中AFTER 要求只有执行某一操作(INSERT、UPDATE、DELETE )之后触发器才被触发,且只能在表上定义。可以为针对表的同一操作定义多个触发器。对于AFTER 触发器,可以定义哪一个触发器被最先触发,哪一个被最后触发,通常使用系统过程sp_settriggerorder 来完成此任务。 INSTEAD OF 触发器表示并不执行其所定义的操作(INSERT、UPDATE、DELETE),而仅是执行触发器本身。既可在表上定义INSTEAD OF 触发器,也可以在视图上定义INSTEAD OF 触发器,但对同一操作只能定义一个INSTEAD OF 触发器。 触发器的主要优点 触发器是自动的:当对表中的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。 触发器可以通过数据库中的相关表进行层叠更改。 触发器可以强制限制,这些限制比用 CHECK 约束所定义的更复杂。而且比使用核查约束更为方便的时,触发器可以引用其它数据表中的列。 创建触发器的规则和限制 在创建和使用触发器时,需要遵循下列规则: Create Trigger语句必须是批处理中的第一个语句,且该批处理中随后出现的其它所有语句都将被解释为Create Trigger语句定义的一部分。 在默认情况下,创建触发器的权限将分配给数据表的所有者,且不能将该权限转给其它用户。 触发器是数据库对象,其名称必须遵循标识符的命名规则。 虽然触发器可以引用当前数据库以外的对象,但只能在当前数据库中创建触发器。 虽然不能在临时数据表上创建触发器,但是触发器可以引用临时数据表。 既不能在系统数据表创建触发器,也不可以引用系统数据表 在包含使用delete或update操作定义的外键的表中,不能定义instead of 和instead of update 触发器。 虽然 TRUNCATE TABLE 语句类似于没有 WHERE 子句(用于删除行)
您可能关注的文档
- 劳动卫生与业病学第二章第五节人机工效学1.ppt
- 北京市工程设项目招标范围和规模标准规定.doc
- 化工英语词.doc
- 北京市房屋筑修缮及装修工程施工合同.doc
- 化学反应速和化学平衡(二轮).ppt
- 北京市统一修(公装)合同范本.doc
- 北京市石景区政府信息公开申请表.doc
- 北京科技大管庄校区.doc
- 北京银行地详细清单.doc
- 北师大网网教育 C++程序设计二(答案).doc
- 数据仓库:Redshift:Redshift与BI工具集成.docx
- 数据仓库:Redshift:数据仓库原理与设计.docx
- 数据仓库:Snowflake:数据仓库成本控制与Snowflake定价策略.docx
- 大数据基础:大数据概述:大数据处理框架MapReduce.docx
- 实时计算:GoogleDataflow服务架构解析.docx
- 分布式存储系统:HDFS与MapReduce集成教程.docx
- 实时计算:Azure Stream Analytics:数据流窗口与聚合操作.docx
- 实时计算:Kafka Streams:Kafka Streams架构与原理.docx
- 实时计算:Kafka Streams:Kafka Streams连接器开发与使用.docx
- 数据仓库:BigQuery:BigQuery数据分区与索引优化.docx
文档评论(0)