建好了怎么查,不要了怎么删
查有两种法子,删只有一条语句。

记牢它两种查法
- SHOW TRIGGERS
- 查系统表 TRIGGERS
重 点
查的是它的定义、状态和挂在哪张表上,不是它跑过几次。
知道更多
触发器跑过几次真机也不记,想知道就自己在体里往日志表插一行。
查有两种法子,删只有一条语句。

查的是它的定义、状态和挂在哪张表上,不是它跑过几次。
触发器跑过几次真机也不记,想知道就自己在体里往日志表插一行。
SHOW 看得快,系统表挑得细。

| 写法 | 长处 |
|---|---|
| SHOW | 一句就出来 |
| 系统表 | 能加 WHERE |
想只看某一张表上的触发器,用哪种?
十一列,横着一屏放不下,竖着看才读得动。

前四列就是建它的时候写的那四样。

Statement 那一列是 BEGIN…END 之间原样的那段代码。
Timing 写的是 BEFORE 或 AFTER,Event 写的是 INSERT、UPDATE、DELETE。
为什么 Created 精确到百分之一秒?
一张叫 TRIGGERS 的表,查它跟查普通表一样。

表名是 TRIGGERS 有 S,课件正文写的 TRIGGER 表少了一个 S。
第 8 章的权限表在 mysql 库,这一张在 information_schema 库。
系统表比 SHOW 强的地方就在这儿。

ACTION_STATEMENT 那一列就是触发器的正文。

ACTION_ORIENTATION 永远是 ROW,因为 MySQL 只有行级触发器。
标准 SQL 还有语句级触发器,MySQL 没实现,所以这一列不会变。
DROP TRIGGER,没有别的写法。

删掉之后表还在,数据也还在,没了的只是那段自动跑的代码。
删表的时候不用先删触发器,表一没它跟着就没了。
把表改个名字,上面的触发器还在不在?
加上 IF EXISTS 就不会因为它不在而报错。

删一个不存在的报 1360,加了 IF EXISTS 只回一个 warning。
课件说这一句要 SUPER 权限,MySQL 8.0 起改成了 TRIGGER 权限。
为什么写脚本时总要带 IF EXISTS?
一句话的事,删完 SHOW TRIGGERS 就少一行。

触发器不能改也不能覆盖,要换内容就是先删再建这两步。
建、查、删三条语句,加一条不存在的 ALTER。

| 子表少了几行 | 子表上的触发器 | 日志表 |
|---|
下面该讲事件了,它跟触发器差在哪?