第 16 章 · 第一节
我没敲它,它自己跑了
这一章讲两样不用你动手就会运行的东西。

重 点
上一章的过程要 CALL 才跑,这一章的两样自己就动了。
打个比方
存储过程是随叫随到的师傅,这两样是装在门口的感应灯。
这一章讲两样不用你动手就会运行的东西。

上一章的过程要 CALL 才跑,这一章的两样自己就动了。
存储过程是随叫随到的师傅,这两样是装在门口的感应灯。
叫醒它们的东西不一样,这是全章的分界线。

哪一样更像操作系统里的定时任务?
两样各讲四步:建、查、改、删。

对应教材第 16 章,前半 16.1,后半 16.2。
改这一件比较特别,它其实没有改。

触发器不能 ALTER,要换内容只能先删掉再重新建一个。
为什么不给触发器留一个 ALTER?
什么条件下触发,触发之后跑在哪一格。

触发器只认三种操作:INSERT、UPDATE、DELETE,查询碰不动它。
这一节全是概念,第二节才动手写第一个触发器。
一句 SELECT 会不会把触发器叫醒?
同一件事,卡在数据落盘的前面还是后面。

| 时机 | 拿来做什么 |
|---|---|
| BEFORE | 校验、改新值 |
| AFTER | 记日志、后续统计 |
只有 BEFORE 改得动将要写进去的值,AFTER 时数据已经是事实。
想拦住一条不合格的数据,该用哪个?
课件这张图说的就是数据和两种触发器的先后。

INSERT、UPDATE、DELETE 三种操作,每种都有前后两个位置。
要改新值就只能 BEFORE,事件是插入所以是 INSERT,合起来就是 A。
| INSERT | UPDATE | DELETE | |
|---|---|---|---|
| BEFORE | |||
| AFTER |
安全检查、数据校验、审计、备份同步、算值、复杂约束。

第 5 章那五道安检门管得住简单规则,管不住跨表的复杂规则。
CHECK 只看得见本行,触发器能去别的表里查一眼。
「删学生连他的选课一起删」属于哪一类?