介绍
触发器是与表有关的数据项,指在insert/update/delete 之前或之后,出发并执行触发器中定义的SQL语句集合。
触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。
使用别名old和new来引用触发器中发生变化的记录内容,这与其他的数据是类似的。
现在触发器只支持行级触发,不支持语句级触发。
行级触发-->五条记录被修改,触发5次
语句级触发-->执行一次update等操作不管影响多少行,都只触发一次
触发器类型
触发器类型 | New和old |
---|---|
insert型触发器 | new表示将要,或者已经新增的数据 |
update型触发器 | old表示修改之前的数据,new表示将要或者已经修改后的数据 |
delete型触发器 | old表示将要或者已经删除的数据 |
触发器语法
创建触发器
create tigger 触发器名
before/after insert/update/delete
on 表名 for each row
begin
-->SQL逻辑;
end;
-
or each row代表的是行级触发器
- 如果是要在增删改之前触发就选before
- 在增删改之后触发就选after
- insert/update/delete 代表的是触发器根据的是插入,更新,删除中其中一种作为触发方式
- mysql暂时只支持行级触发器
查看触发器
show triggers;
删除触发器
drop trigger [数据库名.]触发器名; #如果没有指定数据库名就默认为当前数据库
触发器的俩个参数old和new
当我们要获取比如说新插入数据的id
new.id
要获取更新数据之前id值
old.id
- insert类型触发器只有new参数
- delete类型触发器只有old参数
- update类型触发器既有new参数也有old参数