1 触发器基本概念
- DM 是一个具有主动特征的数据库管理系统,主动特征包括约束机制和触发器机制。约束机制主要用于对某些列进行有效性和完整性验证。
- 触发器(TRIGGER)定义当某些与数据库有关的事件发生时,数据库应该采取的操作。常用于自动完成一些数据库的维护工作。
- 触发器的特殊性在于它是建立在某个具体的表或视图之上的,或者是建立在各种事件前后的,而且是自动激发执行的。
- 触发器类型
(1)表触发器,对表中数据操作引发的触发
(2)事件触发器:对数据库对象操作引起的触发
(3)时间触发器:基于时间触发
2 表触发器
2.1 触发动作
- 触发表级触发器的触发动作:insert,delete,update操作
(1)update
更新表中name,触发该触发器
(2)insert,delete
添加 或 删除表中数据,触发该触发器
2.2 触发级别
- 触发器级别:
(1)元组级(行级)
对触发命令所影响的每一条记录都激发一次。(常用于数据审计、完整性检查等)
(2)语句级
语句级触发器对每个触发命令执行一次。(一般用于对表上执行的操作类型引入附加的安全措施)
(1)元组级(for each row)
影响了两条记录,打印两次:
(2)语句级(for each statement)
影响了两条记录,但只打印一次:
2.3 触发时机
- 可以通过两种方式指定触发时机:
(1)before / after
选择触发动作前 / 后运行触发器
(2)instead of
选择动作触发时,替换原始操作。(允许建立在视图上,且只支持行级触发)
(1)before
插入id为12的数据(在insert前执行id +1,所以不会违反唯一性约束)
(2)after
插入一条数据(在insert后将插入id及操作类型记录到t_temp表)
(3)instead of
更新一条数据(更新操作会替换成触发器里的操作)