顾名思义,触发器是要有事件触发才能执行,不能直接调用。用户对表或者视图进行操作比如update,insert,delete时,触发定义好的trigger执行操作。 ##触发器要素
- ###事件 : 常见的操作,insert,delete等
- ###时间: before,after
- ###操作: 触发器需要处理的操作
- ###对象 : 表,视图,数据库
- ###条件 : 可以由when指定在触发事件的基础上,所需要的触发条件,比如对于delete触发的事件,可以指定 when id='xxx',满足这个条件后,才会去执行触发器定义的操作。
- ###频率: 行级,语句级 ##语法
- 创建触发器
create [or replace] trigger 触发器名称
{before | after}
{insert | update | delete [of 列名]}
on 表名
[for each row]
[when 条件]
declare
....
begin
...
end
for each row 是可选项,针对的频率是行级,当省略时,before/after 触发器为语句触发,instead of 触发器只能是行触发。 ####例子
这里输入代码
- 删除触发器
drop trigger trigger_name
##触发器注意事项
- 触发器不接受参数
- 一个表中最多只有12个触发器
- 触发器越多,对表的select,insert,update,delete等DML操作性能影响越大
- 触发器最大为32K
- 触发器的执行部分只能用select,insert,update,delete,不能用create,alter,drop。