数据库技术与应用—SQL Server 2008(第2版)第12章 触发器

数据库技术与应用—SQL Server 2008(第2版)第12章 触发器

ID:40233065

大小:426.00 KB

页数:32页

时间:2019-07-27

数据库技术与应用—SQL Server 2008(第2版)第12章 触发器_第1页
数据库技术与应用—SQL Server 2008(第2版)第12章 触发器_第2页
数据库技术与应用—SQL Server 2008(第2版)第12章 触发器_第3页
数据库技术与应用—SQL Server 2008(第2版)第12章 触发器_第4页
数据库技术与应用—SQL Server 2008(第2版)第12章 触发器_第5页
资源描述:

《数据库技术与应用—SQL Server 2008(第2版)第12章 触发器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第12章触发器12.1触发器概述触发器实际上就是一种特殊类型的存储过程,它在执行某些特定的T-SQL语句或操作时可以自动执行。在SQLServer2000及其之前的版本中,触发器是针对数据表的特殊的存储过程,当这个表发生了Insert、Update或Delete操作时,如果该表有对应操作的触发器,这个触发器就会自动激活执行。在SQLServer2008中,触发器有了更进一步的功能,在数据表(库)发生Create、Alter和Drop操作时,也会自动激活执行。12.1触发器概述触发器的常用功能如下:1.完成更复杂的数据约束2.检查所做的

2、SQL所作的操作是否允许3.修改其它数据表里的数据4.调用更多的存储过程5.返回自定义的错误信息6.更改原本要操作的SQL语句7.防止数据表结构被更改或数据表被删除8.审核和控制服务器会话12.1触发器概述触发器的类型1.DML触发器DML触发器是当数据库服务器中发生数据操作语言(DML)事件时执行的存储过程。2.DDL触发器DDL触发器是在响应数据定义语言(DDL)事件时执行的存储过程。DDL触发器一般用于执行数据库中管理任务。如审核和规范数据库操作、防止数据库表结构被修改等。3.登录触发器登录触发器将为响应LOGON事件而激发存储

3、过程。与SQLServer实例建立用户会话时将引发此事件。12.2DML触发器DML触发器的类型1.After触发器:这类触发器是在记录已经改变完之后(after),才会被激活执行,它主要是用于记录变更后的处理或检查,一旦发现错误,也可以用RollbackTransaction语句来回滚本次的操作。2.InsteadOf触发器:这类触发器一般是用来取代原本要进行的操作,在记录变更之前发生的,它并不去执行原来SQL语句里的操作(Insert、Update、Delete),而去执行触发器本身所定义的操作。12.2DML触发器inserte

4、d表和deleted表SQLServer为每个DML触发器都定义了两个特殊的表,一个是inserted表,一个是deleted表。这两个表是建在数据库服务器的内存中的,是由系统管理的逻辑表,而不是真正存储在数据库中的物理表。对于这两个表,用户只有读取的权限,没有修改的权限。这两个表的结构与触发器所在数据表的结构是完全一致的,当触发器的工作完成之后,这两个表也将会从内存中删除。对于插入记录操作来说,inserted表里存放的是要插入的数据;对于更新记录操作来说,inserted表里存放的是更新后的记录。对于更新记录操作来说,delete

5、d表里存放的是更新前的记录;对于删除记录操作来说,deleted表里存入的是被删除的旧记录。12.2DML触发器DML触发器的工作原理。1.After触发器的工作原理After触发器是在记录更变完之后才被激活执行的。以删除记录为例:当SQLServer接收到一个要执行删除操作的SQL语句时,SQLServer先将要删除的记录存放在删除表里,然后把数据表里的记录删除,再激活After触发器,执行After触发器里的SQL语句。2.InsteadOf触发器的工作原理InsteadOf触发器与After触发器不同。After触发器是在Ins

6、ert、Update和Delete操作完成后才激活的,而InsteadOf触发器,是在这些操作进行之前就激活了,并且不再去执行原来的SQL操作,而去运行触发器本身的SQL语句。12.2DML触发器创建DML触发器的注意事项1.CREATETRIGGER语句必须是批处理中的第一个语句。2.创建DML触发器的权限默认分配给表的所有者,且不能将该权限转给其他用户。3.DML触发器为数据库对象,其名称必须遵循标识符的命名规则。4.虽然DML触发器可以引用当前数据库以外的对象,但只能在当前数据库中创建DML触发器。5.虽然DML触发器可以引用临

7、时表,但不能对临时表或系统表创建DML触发器。不应引用系统表,而应使用信息架构视图。6.对于含有用DELETE或UPDATE操作定义的外键的表,不能定义INSTEADOFDELETE和INSTEADOFUPDATE触发器。7.虽然TRUNCATETABLE语句类似于不带WHERE子句的DELETE语句(用于删除所有行),但它并不会触发DELETE触发器,因为TRUNCATETABLE语句没有记录。12.2DML触发器创建一个简单的触发器该触发器的作用是:在教师表中插入一条记录后,发出“你已经成功添加了一个学生信息”的提示信息。对该触发

8、器的作用进行分析不难发现我们要建立的触发器类型是:AfterInsert类型。1.创建触发器的步骤(1)启动“SQLServerManagementStudio”,在“对象资源管理器”下展开“数据库”树型目录,定位到“C

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。