欢迎来到天天文库
浏览记录
ID:50328556
大小:337.00 KB
页数:16页
时间:2020-03-08
《SQL Server 2005数据库技术与应用 教学课件 作者 赵丽辉 第10章 触发器.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章触发器【学习要点】触发器的基本概念及作用触发器的分类创建和管理触发器触发器的综合应用10.1触发器基本概述1、什么是触发器触发器是一种特殊的存储过程,当用户对表或视图执行INSERT、UPDATE或DELETE操作时,相关的触发器被自动调用,检查表或视图在执行添加、修改或删除操作后,其数据是否符合业务规则和数据完整性。触发器及其激发它执行的操作语句,整体被作为单个事务(Transaction),而且在触发器中可以回滚该事务。10.1触发器基本概述2、触发器与约束约束可以直接设置于数据表内,只能处理相对简单的操作,包括自动填入默认值(DEFAULT)、确保字段数据
2、不重复(PRIMARYKEY/UNIQUEKEY)、限制输入值在某一范围内(CHECK)、维护数据表间的完整性(FOREIGNKEY)等。触发器是一种特殊的存储过程,当数据表发生INSERT、UPDATE或DELETE操作时会自动被触发,可以去执行相对复杂的操作。10.1触发器基本概述3、触发器的用途触发器可以用于连锁更新或连锁删除数据库中相关联的表。但是,如果使用FOREIGNKEY约束来完成连锁更新与删除会比触发器更有效率。数据被蓄意或是不小心地添加、修改或删除的情况下,使用触发器可以完全避免。当数据所需符合的条件非常复杂,无法使用CHECK约束来完成时,就应使用触
3、发器。触发器可以替代CHECK约束,完成复杂的操作。触发器可以去检验表在事务操作之前和之后的状态,以便提供相应的处理机制。10.1触发器基本概述4、触发器的类别AFTER触发器:执行INSERT、UPDATE或DELETE操作之后执行AFTER触发器。若发现操作有误,可使用ROLLBACKTRANSACTION语句将此次操作所更改的数据全部回滚。INSTEADOF触发器:INSTEADOF是“取代”的意思,就是这类触发器会取代原本要进行的操作(例如新建或更改数据操作),因此会在数据变动之前就发生,而且数据要如何变动也完全取决于触发器。10.2使用SQLServerMan
4、agementStudio管理触发器10.2.1创建触发器10.3使用Transact-SQL管理触发器10.3.1创建和修改触发器创建触发器语法格式如下:CREATETRIGGER触发器名ON{表
5、视图}{FOR
6、AFTER
7、INSTEADOF}{DELETE
8、INSERT
9、UPDATE}ASSQL语句10.3使用Transact-SQL管理触发器参数说明:触发器名:指触发器的名称,同其他数据库对象一样,触发器的名称在所属数据库中必须是唯一的。ON{表
10、视图}:指定触发器所属的数据表或视图。但只有INSTEADOF触发器才能设置在视图上。{FOR
11、AFTER
12、INST
13、EADOF}:指定触发器类型。FOR与AFTER具有相同含意,建立AFTER触发器,只有在数据表的操作都已经完成后才激发此触发器。INSTEADOF触发器将取代原来要执行的数据操作。{DELETE
14、INSERT
15、UPDATE}:指在表或视图上执行了哪一类的操作时会将触发器激活。至少必须指定一个,若指定多个,可用逗号分开。在同一数据表中,AFTER触发器指定的操作数目没有限制;INSTEADOF触发器,则限制INSERT、UPDATE、DELETE每项最多只能有一个。SQL语句:指定触发器的内容。因为触发器是自动被执行的,所以触发器不接收任何参数,也不需返回数据。10.3
16、使用Transact-SQL管理触发器10.3.1创建和修改触发器修改触发器语法格式如下:ALTERTRIGGER触发器名ON{表
17、视图}{FOR
18、AFTER
19、INSTEADOF}{DELETE
20、INSERT
21、UPDATE}ASSQL语句10.4设计触发器10.4.1设计触发器的注意事项1、设计触发器的限制ALTERDATABASECREATEDATABASEDISKINITDISKRESIZEDROPDATABASELOADDATABASELOADLOGRECONFIGURERESTOREDATABASERESTORELOG10.4设计触发器10.4.1设计触发器的注
22、意事项2、在触发器中取得字段修改之前及之后的数据inserted数据表deleted数据表在新建时(INSERT)存放新插入的记录在修改时(UPDATE)存放已更新的记录存放更新前的旧记录在删除时(DELETE)存放被删除的旧记录10.4设计触发器10.4.2建立AFTERINSERT触发器当INSERT触发器被激活,新建的数据同时放入inserted数据表和原数据表中,deleted数据表还未被使用。10.4设计触发器10.4.3建立AFTERUPDATE触发器当UPDATE触发器被激活时,更新的数据已存入原数据表及inserted数据
此文档下载收益归作者所有