数据库原理与应用 第 16 章 · 上机三
课程第 16 章上机三 查全部查系统表只查一个删触发器重名外码替你删的行表一删连续练习 版式
第 16 章 触发器和事件 · 上机三

查、改、删触发器

课件第 20 到 30 页:两种查法、一种删法,外加一件课件没说的——外码替你删的行不响。
已完成 0 / 7
本 次 上 机 题 目
  1. 01先建两个,再看全部
  2. 02第二种查法:TRIGGERS 表
  3. 03加个 WHERE 挑出来
  4. 04DROP TRIGGER 与 1360
  5. 051359:一个名字只能有一个
  6. 06不报错的那一种
  7. 07触发器跟着没
  8. 查一遍、删一遍、再建回来
01
第 16 章 · 上机三

先建两个,再看全部

十一列,横着放不下,结尾加 \G 竖着看。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开就在 teaching 库里,五张表已经装好。这一章要往表上挂触发器、往库里放事件。
mysql>

重 点

Trigger、Event、Table、Timing 这四列就是建它时写的那四样。

知道更多

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

02
第 16 章 · 上机三

第二种查法:TRIGGERS 表

所有触发器的定义都躺在 information_schema 里。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开就在 teaching 库里,五张表已经装好。这一章要往表上挂触发器、往库里放事件。
mysql>

重 点

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

知道更多

系统表能用 WHERE 挑,SHOW 不能挑得这么细,这是它比 SHOW 强的地方。

03
第 16 章 · 上机三

加个 WHERE 挑出来

查特定触发器就在系统表上加条件。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开就在 teaching 库里,五张表已经装好。这一章要往表上挂触发器、往库里放事件。
mysql>

重 点

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

想一想

ACTION_ORIENTATION 一栏为什么永远是 ROW?

04
第 16 章 · 上机三

DROP TRIGGER 与 1360

删一个不存在的,报的是 Trigger does not exist。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开就在 teaching 库里,五张表已经装好。这一章要往表上挂触发器、往库里放事件。
mysql>

重 点

第二次就报 1360。加上 IF EXISTS 只回一个 warning,不报错。

知道更多

触发器不能改,要换内容只能先删再建,DROP 这一句往后天天用。

05
第 16 章 · 上机三

1359:一个名字只能有一个

同一个库里触发器的名字不能重。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开就在 teaching 库里,五张表已经装好。这一章要往表上挂触发器、往库里放事件。
mysql>

重 点

第一题建过 insert_sc_trigger 了,同名再建就是 1359。

想一想

换一张表挂,同名还行不行?

06
第 16 章 · 上机三

不报错的那一种

ON DELETE CASCADE 删掉的行,子表上的触发器一声不吭。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开就在 teaching 库里,五张表已经装好。这一章要往表上挂触发器、往库里放事件。
mysql>

重 点

c1 空了,dlog 也是空的。行真的没了,触发器却没响。

知道更多

外码的级联是存储引擎自己做的,绕过了触发器。靠触发器记账的表要当心这一条。

知道更多

外码的级联是存储引擎自己做的,压根没走触发器那条路。

想一想

那想记全,级联该写在外码上还是写在触发器里?

07
第 16 章 · 上机三

触发器跟着没

删表的时候不用再一个个删它的触发器。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开就在 teaching 库里,五张表已经装好。这一章要往表上挂触发器、往库里放事件。
mysql>

重 点

表没了,挂在它上面的触发器一起没,这是真机的规矩。

想一想

那把表改个名字呢,触发器还在不在?

第 16 章 · 上机三

查一遍、删一遍、再建回来

把这一页学的三件事串成一条线走完。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开就在 teaching 库里,五张表已经装好。这一章要往表上挂触发器、往库里放事件。
mysql>

重 点

开头三句 IF EXISTS 让这一题能反复跑,前面建过什么都不影响。

想一想

两次 COUNT 之间为什么不是差 3?

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