数据库原理与应用 第 16 章 · 第四节
课程第 16 章第四节 查和删两种查法SHOW竖着看系统表挑一个看细节该删了DROP小结 版式
第 16 章 触发器和事件 · 第四节

查看与删除触发器

本 节 知 识 点
  1. 20建好了怎么查,不要了怎么删
  2. 21一种看全部,一种能挑
  3. 22SHOW TRIGGERS 加 \G
  4. 23十一列各是什么
  5. 24所有定义都在 information_schema 里
  6. 25加 WHERE 挑出想看的那一个
  7. 26二十二列,只能竖着看
  8. 27删触发器只有一句
  9. 28DROP TRIGGER 加名字
  10. 29删掉 update_s_trigger
  11. 30触发器这四步走完了
20
第 16 章 · 第四节

建好了怎么查,不要了怎么删

查有两种法子,删只有一条语句。

第 20 页课件

记牢它两种查法

  1. SHOW TRIGGERS
  2. 查系统表 TRIGGERS

重 点

查的是它的定义、状态和挂在哪张表上,不是它跑过几次。

知道更多

触发器跑过几次真机也不记,想知道就自己在体里往日志表插一行。

21
第 16 章 · 第四节

一种看全部,一种能挑

SHOW 看得快,系统表挑得细。

第 21 页课件

分清楚两种查法

写法长处
SHOW一句就出来
系统表能加 WHERE

想一想

想只看某一张表上的触发器,用哪种?

22
第 16 章 · 第四节

SHOW TRIGGERS 加 \G

十一列,横着一屏放不下,竖着看才读得动。

第 22 页课件

重 点

\G 是客户端的花样,告诉它竖排,服务器根本看不见这两个字符。

知道更多

在图形工具里查不用加 \G,那边本来就是一格一格显示的。

上机做

上机三第 1 题 查一遍

23
第 16 章 · 第四节

十一列各是什么

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

第 23 页课件

记牢它最要紧的四列

  1. Trigger 名字
  2. Event 什么操作
  3. Table 哪张表
  4. Timing 前还是后

重 点

Statement 那一列是 BEGIN…END 之间原样的那段代码。

练一练

SHOW TRIGGERS 的回显里,看哪一列能知道它是前触发还是后触发?
  1. AEvent
  2. BTiming
  3. CStatement
答案 B

Timing 写的是 BEFORE 或 AFTER,Event 写的是 INSERT、UPDATE、DELETE。

想一想

为什么 Created 精确到百分之一秒?

24
第 16 章 · 第四节

所有定义都在 information_schema 里

一张叫 TRIGGERS 的表,查它跟查普通表一样。

第 24 页课件

重 点

表名是 TRIGGERS 有 S,课件正文写的 TRIGGER 表少了一个 S。

知道更多

第 8 章的权限表在 mysql 库,这一张在 information_schema 库。

上机做

上机三第 2 题 查系统表

25
第 16 章 · 第四节

加 WHERE 挑出想看的那一个

系统表比 SHOW 强的地方就在这儿。

第 25 页课件

重 点

WHERE trigger_name='某某' 就只出那一行,SHOW 挑不了这么细。

上机做

上机三第 3 题 挑一个出来

想一想

想按表名挑,条件该写哪一列?

26
第 16 章 · 第四节

二十二列,只能竖着看

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

第 26 页课件

重 点

ACTION_ORIENTATION 永远是 ROW,因为 MySQL 只有行级触发器。

知道更多

标准 SQL 还有语句级触发器,MySQL 没实现,所以这一列不会变。

27
第 16 章 · 第四节

删触发器只有一句

DROP TRIGGER,没有别的写法。

第 27 页课件

重 点

删掉之后表还在,数据也还在,没了的只是那段自动跑的代码。

知道更多

删表的时候不用先删触发器,表一没它跟着就没了。

想一想

把表改个名字,上面的触发器还在不在?

28
第 16 章 · 第四节

DROP TRIGGER 加名字

加上 IF EXISTS 就不会因为它不在而报错。

第 28 页课件

重 点

删一个不存在的报 1360,加了 IF EXISTS 只回一个 warning。

知道更多

课件说这一句要 SUPER 权限,MySQL 8.0 起改成了 TRIGGER 权限。

上机做

上机三第 4 题 删两遍看看

想一想

为什么写脚本时总要带 IF EXISTS?

29
第 16 章 · 第四节

删掉 update_s_trigger

一句话的事,删完 SHOW TRIGGERS 就少一行。

第 29 页课件

重 点

触发器不能改也不能覆盖,要换内容就是先删再建这两步。

上机做

上机三第 5 题 同名再建一次

30
第 16 章 · 第四节

触发器这四步走完了

建、查、删三条语句,加一条不存在的 ALTER。

第 30 页课件

试一试外码替你删的行,触发器响不响

子表的行是被谁删的
子表少了几行子表上的触发器日志表

记牢它触发器三条语句

  1. CREATE TRIGGER
  2. SHOW TRIGGERS
  3. DROP TRIGGER

想一想

下面该讲事件了,它跟触发器差在哪?

保山学院·人工智能教研室·曹鼎鼎