- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第13篇 章 触发器 SQL ppt .ppt
第13章 触发器 ;在前面介绍了编写批处理的方法,但要让这些批处理保持永久有效,就要利用到存储过程和触发器了。
存储过程的存在独立于表,触发器的利用则与表紧密结合。
用户可以使用存储过程来完善应用程序,使应用程序更有效率;可以利用触发器来实现复杂的业务规则,更有效地实施数据完整性。;概 述;【存储过程】
存储过程是一组 Transact-SQL 语句,在一次编译后可以执行多次。因为不必重新编译 Transact-SQL 语句,所以执行存储过程可以提高性能。
【触发器】
触发器是一种特殊类型的存储过程,不由用户直接调用。创建触发器时会对其进行定义,以便在对特定表或列作特定类型的数据修改时执行。
CREATE PROCEDURE 或 CREATE TRIGGER 语句不能跨越批处理。即存储过程或触发器始终只能在一个批处理中创建并编译到一个执行计划中。
触发器既然是一种特殊类型的存储过程,那么它与存储过程也有一些区别。例如,存储过程可以由用户直接调用执行,但是触发器不能被直接调用执行。;在SQL Server 中一张表可以有多个触发器。用户可以针对INSERT、UPDATE或DELETE语句分别设置触发器,也可以针对一张表上的特定操作设置多个触发器。触发器里可以容纳非常复杂的Transact-SQL 语句。但是不管触发器所进行的操作有多复杂,触发器都只作为一个独立的单元被执行,被看做是一个事务。如果在执行触发器的过程中发生了错误,则整个事务将会自动回滚。
触发器在服务器将特定的操作(INSERT、UPDATE或DELETE )执行结束后才执行。;创建触发器前应考虑下列问题:
CREATE TRIGGER 语句必须是批处理中的第一个语句。将该批处理中随后的其它所有语句解释为 CREATE TRIGGER 语句定义的一部分。
创建触发器的权限默认分配给表的所有者,且不能将该权限转给其他用户。
触发器为数据库对象,其名称必须遵循标识符的命名规则。
虽然触发器可以引用当前数据库以外的对象,但只能在当前数据库中创建触发器。
虽然不能在临时表或系统表上创建触发器,但是触发器可以引用临时表。不应引用系统表,而应使用信息架构视图。
在含有用 DELETE 或 UPDATE 操作定义的外键的表中,不能定义 INSTEAD OF 和 INSTEAD OF UPDATE 触发器。
虽然 TRUNCATE TABLE 语句类似于没有 WHERE 子句(用于删除行)的 DELETE 语句,但它并不会引发 DELETE 触发器,因为 TRUNCATE TABLE 语句没有记录。
WRITETEXT 语句不会引发 INSERT 或 UPDATE 触发器。 ;创建触发器时需指定:
名称。
在其上定义触发器的表。
触发器将何时激发。
激活触发器的数据修改语句。有效选项为 INSERT、UPDATE 或 DELETE。多个数据修改语句可激活同一个触发器。
执行触发操作的编程语句。 ;1.使用T-SQL语句创建触发器
创建触发器使用CREATE TRIGGER语句。
CREATE TRIGGER 权限默认授予定义触发器的表所有者、sysadmin 固定服务器角色成员以及 db_owner 和 db_ddladmin 固定数据库角色成员,并且不可转让。;【语法格式】
CREATE TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ] {????{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }????????[ WITH APPEND ]????????[ NOT FOR REPLICATION ]????????AS????????[ { IF UPDATE ( column )????????????[ { AND | OR } UPDATE ( column ) ]????????????????[ ...n ]????????| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )????????????????{ comparison_operator } column_bitmask [ ...n ]????????} ] ????????sql_statement [ ...n ] ????} } ;【示例】 使用带有提醒消息的触发器
当有人试图在 titles 表中添加或更改数据时,下例将向客户端显示一条消息。
USE pubs
IF EXISTS (SELECT name FROM sysobjects
您可能关注的文档
- 第11篇 章 门电路和组合逻辑电路 电工课件.ppt
- 第11篇 章 闪回操作和Undo表 Oracle实用教程(第3版)PPT.ppt
- 第11篇 章 非线性分析 ANSYS12.1电子教案 .ppt
- 第11篇 章 齿轮系、减速器及无级变速传动《机械基础》课件.ppt
- 第11篇 章 Android应用《嵌入式系统》课件.ppt
- 第11篇 章 pricing with market power.ppt
- 第11篇 章 sendmail Linux .ppt
- 第11篇 章 Shell的使用 LinuxPPT.ppt
- 第11篇 章 Verilog仿真验证 EDA Verilog 课件.ppt
- 第11篇 章 XML基础 网页制作(PHP).ppt
- 2025年海洋文化旅游产业资源整合策略与品牌建设区域旅游产业竞争力报告.docx
- 2025年教育国际化课程体系与教学方法创新国际交流与合作报告.docx
- 十法律服务与合规科技融合趋势分析:2025年行业应用场景前瞻.docx
- 2025年柔性电子技术在智能停车场市场拓展策略优化策略优化策略优化策略中的应用与创新报告.docx
- 2025年数字文化与娱乐行业产业链上下游分析报告.docx
- 2025年O2O美容服务平台服务标准化与用户粘性提升策略报告.docx
- 2025年新材料在高端装备制造中的性能提升与技术创新研究报告.docx
- 合规科技赋能,2025年律师事务所业务模式创新与转型研究报告.docx
- 钠离子电池技术突破:2025年研发进展与商业化前景研究报告.docx
- 2025年海洋科技金融与蓝色产业投融资研究报告.docx
文档评论(0)