数据库原理与应用 第 16 章 · 第二节
课程第 16 章第二节 动手写三条语句语法NEW和OLD例题一验一遍 版式
第 16 章 触发器和事件 · 第二节

创建触发器与 NEW、OLD

本 节 知 识 点
  1. 09写出第一个能跑的触发器
  2. 10CREATE、SHOW、DROP
  3. 11CREATE TRIGGER 的五行
  4. 12两个伪记录,把这一行递进来
  5. 13成绩为空就改成 0
  6. 14插一条空成绩,出来是 0
09
第 16 章 · 第二节

写出第一个能跑的触发器

先看语法,再把课件那个例子原样敲一遍。

第 9 页课件

记牢它语法四要素

  1. 什么时机
  2. 什么事件
  3. 哪张表
  4. 每行都跑

重 点

四样写齐了才算一个完整的触发器,缺一样真机就不认。

知道更多

触发器只能建在永久表上,临时表和视图上都建不了。

10
第 16 章 · 第二节

CREATE、SHOW、DROP

触发器一辈子就这三条语句。

第 10 页课件

重 点

没有 ALTER TRIGGER 这一条,课件这张图上也没有它。

想一想

那改一个触发器要几步?

11
第 16 章 · 第二节

CREATE TRIGGER 的五行

名字、时机加事件、哪张表、每一行、要干什么。

第 11 页课件

重 点

FOR EACH ROW 必须写,它说的是命中的每一行都跑一遍。

知道更多

DEFINER 那一段可以不写,不写就是当前登录的这个账号。

上机做

上机一第 1 题 照课件敲一遍

想一想

少写 FOR EACH ROW 会怎么样?

12
第 16 章 · 第二节

两个伪记录,把这一行递进来

触发器要动的是正在被改的那一行。

第 12 页课件

关键术语

NEWNEW
这次要写进去的新数据
OLDOLD
这次被改掉或删掉的旧数据

试一试三种操作,谁在场谁不在场

这次是什么操作
OLD 旧数据
NEW 新数据

记牢它必背口诀

  1. 插入只有 NEW
  2. 删除只有 OLD
  3. 修改两个都有

上机做

上机一第 3 题 写错试试

13
第 16 章 · 第二节

成绩为空就改成 0

BEFORE INSERT 里一句 SET NEW.score,值就换了。

第 13 页课件

重 点

SET NEW.列 改的是将要落盘的那个值,改完才拿去查约束。

知道更多

触发器体里有分号,跟存储过程一样要先改定界符,不改就报 1064。

练一练

这一段为什么必须是 BEFORE 而不能是 AFTER?
  1. AAFTER 里没有 NEW
  2. BAFTER 时数据已写入,改 NEW 报 1362
  3. CAFTER 跑得慢
答案 B

AFTER 里 NEW 读得到但改不动,真机直接报 1362。

上机做

上机一第 1 题 建起来

14
第 16 章 · 第二节

插一条空成绩,出来是 0

c8 那一行存进去的是 0.00,不是 NULL。

第 14 页课件

重 点

c7 还是 NULL,因为它是建这个触发器之前就在表里的。

知道更多

课件这张结果表第一行 s2 苏乐 信息,是 s 表的行串进来了,sc 表没有它。

知道更多

这一页页眉写着第 7 章视图和索引,也串了,本页属于第 16 章。

上机做

上机一第 2 题 自己插一条

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