第 16 章 · 第一节 · 课件第 1、3、4、5 页
第 16 章 触发器和事件
两种不用调用、自动执行的数据库对象。

分清楚
| 对象 | 什么时候执行 |
|---|---|
| 触发器 | 表中数据变化时 |
| 事件 | 到了指定的时间 |
重 点
上一章的存储过程要用 CALL 调用。触发器和事件都由 MySQL 自动执行。
两种不用调用、自动执行的数据库对象。

| 对象 | 什么时候执行 |
|---|---|
| 触发器 | 表中数据变化时 |
| 事件 | 到了指定的时间 |
上一章的存储过程要用 CALL 调用。触发器和事件都由 MySQL 自动执行。
触发器由表上的操作引起,事件由时间引起。
| 什么时候执行 | 由谁执行 | |
|---|---|---|
| 触发器 TRIGGER | 表中插入、修改或删除记录时 | 由对表的操作触发 |
| 事件 EVENT | 到了指定的时刻,或每隔一段时间 | 由事件调度器调用 |
| 时机 | 执行时间 | 常用于 |
|---|---|---|
| BEFORE | 触发事件之前 | 数据校验,例如类型、格式 |
| AFTER | 触发事件之后 | 后续的统计和记录,例如行数、平均值、日志 |
BEFORE 在操作之前执行,适合检查和修改将要写入的数据。
插入、修改、删除三种事件,各有 BEFORE 和 AFTER 两种时机。

先执行 BEFORE 触发器,再修改表中的数据,最后执行 AFTER 触发器。
安全检查、数据校验、审计、备份同步、自动计算、复杂的完整性规则。

触发器能完成的检查,外码和 CHECK 约束也能完成吗?