SQL SERVER资料之五:数据库实现触发器
这是我初学时候的笔记,帖出来抛砖引玉!如果大家感觉有用的话,我将整理出下一版!
CHAPTER 实现触发器
触发器是一个特殊的存储过程,它在指定表中的数据被修改时执行。我们可以使用触发器来强制参考完整性,或者保持没表中相关边的逻辑数据的一致性。
1. 介绍触发器:触发器是一类特殊的存储过程,它在试图更改触发器所保护的数据时自动执行。触发器与表相关联,自动激活,不能被调用,且为事务的一部分!
触发器的主要好处是它可以包含复杂的处理逻辑!
如果在触发器表上存在约束,则约束在触发器执行前检查。如果违反约束,触发器就不执行。
大多数触发器是后反应的,约束和instead of 触发器是前反应的!
2. 定义触发器:下在我们来看看我们如何来创建,修改和删除触发器。
创建:我们使用create trigger语句来创建触发器,这条语句指明了定义触发器捕,触发器执行的事件和触发器特定的指令。
For 和alter语句是创建相同类型触发器的先进集体语法,它在初始化(insert,update,delete)之后触发。
当指定for update时,if update(column_name)定位在要更新的列或是多个列上。
INSTEAD OF触发器取消触发动作,并招待一悠闲的的替代功能。
修改:当我们需要更改一个存在的触发器时,则只需要自发触发器,而不必删除它。此时SQL SERVER将用改变后的触发器来替换现在有的触发器的定义。也可以在修改的时候修改触发器的动作。如我们为INSERT语句创建了一个触发器,之后我们把动作修改为UPDATE。
像存储过程一样,它也支持延时的名字解析,可以在触发器中引用 还不存在的表和视图,但是触发器招待时,如果对象要存在!
我们可以禁止或者雇用一个指定的触发器,或者表中的所有触发器。当触发器被禁止后,它仍在表中定义,蛤是它的动作不会被执行,直到重新启用后为止!
Alter table table
{enable|disable} trigger {all|trigger_name[,…n]}
删除:如果触发器没有存在的价值,就可以删除它。
Drop trigger trigger_name
3.触发器是如何工作的:我们现在来看一看不同类型的触发器工作方式的差别。
INSERT触发器如何工作:
DELETE触发器如何工作:
UPDATE触发器如何工作:
INSTEAD OF触发器如何工作:
嵌套触发器如何工作:
递归触发器如何工作:
4. 触发器示例:我们刚才已经知道触发器强制祥瑞数据完整性和业务规则,现在我们来看一下具体的实例:
强制数据完整性:
强制业务规则:
5.性能考虑:触发器运行很快,因为INSERTED表和DELETED表存放在高速缓存中。执行时间主要由引用表的数量和影响的行数确定。
--董晓涛