一.触发器的概念
触发器(trigger)是SQL server提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,当对一个表进行(insert,delete,update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。触发器可以从(USER_TRIGGERS,USER_TRIGGERS)数据字典中查到。
二.触发器和存储过程的区别
触发器与存储过程的区别是运行方式的不同,触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行而存储过程需要用户,应用程序或者触发器来显示地调用并执行。
三.触发器的优点
1.触发器是自动的。当对表中的数据做了任何修改立即激活。
2.触发器可以通过数据库中的相关表进行层叠修改。
3.触发器可以强制限制。这些限制比用CHECK约束所定义的更复杂。与CHECK约束不同的是,触发器可以引用其它表中的列。
四.触发器的作用
触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂参照完整性和数据的一致性,它能够对数据库中的相关表进行级联修改,提高比CHECK约束更复杂的的数据完整性,并自定义错误消息。触发器的主要作用主要有以下接个方面:
1.强制数据库间的引用完整性。
2.级联修改数据库中所有相关的表,自动触发其它与之相关的操作。
3.跟踪变化,撤销或回滚违法操作,防止非法修改数据。
4.返回自定义的错误消息,约束无法返回信息,而触发器可以。
5.触发器可以调用更多的存储过程。
五.触发器的分类
SqlServer包括三种常规类型的触发器:
DML触发器、DDL触发器和登录触发器。
1.DML(数据操作语言,Data Manipulation Language)触发器
DML触发器是一些附加在特定表或视图上的操作代码,当数据库服务器中发生数据操作语言事件时执行这些操作。SqlServer中的DML触发器有三种:
1.insert触发器:向表中插入数据时被触发;
2.delete触发器:从表中删除数据时被触发;
3.update触发器:修改表中数据时被触发。