## 触发器
#### 概念
**触发器是一种特殊类型的存储过程**,它不同于我们前面介绍过的存储过程。**触发器主要是通过事件进行触发而被执行的**,而存储过程可以通过存储过程名字而被直接调用。
触发器:trigger,是一种非常接近于js中的事件的知识。提前给某张表的所有记录(行)绑定一段代码,如果改行的操作满足条件(触发),这段提前准备好的代码就会自动执行。
#### 作用
1. 可在写入数据表前,强制检验或转换数据。(保证数据安全).
2. 触发器发生错误时,异动的结果会被撤销。(如果触发器执行错误,那么前面用户已经执行成功的操作也会被撤销:事务安全).
3. 部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器.
4. 可依照特定的情况,替换异动的指令 (INSTEAD OF)。(mysql不支持)
#### 优点
1. 触发器可通过数据库中的相关表实现级联更改。(如果某张表的数据改变,可以利用触发器来实现其他表的无痕操作[用户不知道]).
2. 保证数据安全:进行安全校验.
#### 缺点
1. 对触发器过分的依赖,势必影响数据库的结构,同时增加了维护的复杂程度。
2. 造成数据在程序层面不可控。(PHP层)
- 数据库介绍
- 数据库基本概念
- SQL介绍
- MySQL服务端架构
- 库操作
- 表操作
- 字段类型
- 整数类型
- 小数类型
- 字符串类型
- 日期/时间类型
- json类型
- 字段属性
- Null
- 默认值
- 列描述
- 主键
- 自动增长
- 唯一键
- 数据库基础操作
- 增
- 删
- 改
- 查
- 运算符
- 算术运算符
- 比较运算符
- 逻辑运算符
- in运算符
- is运算符
- like运算符
- 高级查询
- 联合查询
- 连接查询
- 交叉连接
- 内连接
- 外连接
- Using关键字
- 子查询
- 标量子查询
- 列子查询
- 行子查询
- 表子查询
- exists子查询
- 子查询特定关键字
- 用户权限管理
- 用户管理
- 权限管理
- 外键
- 外键操作
- 外键基本要求
- 约束
- 视图
- 事务安全
- 自动事务
- 手动事务
- 事务特点
- 变量
- 系统变量
- 会话变量
- 局部变量
- 流程结构
- if分支
- while循环
- 函数
- 内置函数
- 字符串函数
- 时间函数
- 数学函数
- 其他函数
- 存储过程
- 与函数的区别
- 存储过程操作
- 存储过程的形参类型
- 触发器
- 触发器概念
- 触发器操作