1. 触发器概述
触发器:做事件-条件-动作规则(event-condition-action rule, ECA rule) 当特定的系统事件发生时,对规则的条件进行检查 如果条件成立则执行规则中的动作,否则不执行该动作 规则中的动作体可以很复杂,通常是一段SQL存储过程。
- 触发器(trigger)是用户定义在关系表上的一类由事件驱动的特殊过程
- 触发器可以实施更为复杂的检查和操作,具有更精细和更强大的数据控制能力
- 触发器保存在数据库服务器中
- 任何用户对表的增、删、改操作均由服务器自动激活相应的触发器,在关系数据库管理系统核心层进行集中的完整性控制
2. 触发器的优点
触发器是自动的。当对表中的数据做了任何修改之后立即被激活。 触发器可以通过数据库中的相关表进行层叠修改。 触发器可以强制限制。这些限制比用CHECK约束所定义的更复杂。与CHECK约束不同的是,触发器可以引用其他表中的列。
3. 触发器的作用
触发器的主要作用有以下几个方面:
1. 强制数据库间的引用完整性
2. 级联修改数据库中所有相关的表,自动触发其它与之相关的操作
3. 跟踪变化,撤销或回滚违法操作,防止非法修改数据
4. 返回自定义的错误消息,约束无法返回信息,而触发器可以
5. 触发器可以调用更多的存储过程
4. 触发器分类
SqlServer包括三种常规类型的触发器:DML触发器、DDL触发器、登录触发器
4.1 DML触发器
SqlServer中的DML触发器有三种:
- insert触发器:向表中插入数据时被触发;
- delete触发器:从表中删除数据时被触发;
- update触发器:修改表中数据时被触发。
当遇到下列情形时,应考虑使用DML触发器:
- 通过数据库中的相关表实现级联更改。
- 防止恶意或者错误的insert、update和delete操作,并强制执行check约束定义的限