事件建好之后的三件事
查、改、删,跟触发器那三步对着看。

记牢它事件三条语句
- SHOW EVENTS
- ALTER EVENT
- DROP EVENT
重 点
触发器那边只有查和删两条,事件这边多出来一条 ALTER。
知道更多
多这一条是因为事件的定义在 mysql.event 表里,改一行就行。
查、改、删,跟触发器那三步对着看。

触发器那边只有查和删两条,事件这边多出来一条 ALTER。
多这一条是因为事件的定义在 mysql.event 表里,改一行就行。
跟触发器那边的两种查法是一个路子。

| 写法 | 看到什么 |
|---|---|
| SHOW EVENTS | 本库全部事件 |
| SHOW CREATE | 一个事件的定义 |
触发器那边对应的是哪两条?
Type 那一列写着是一次性还是周期性。

ONE TIME 看 Execute at,RECURRING 看 Interval 和 Starts。
课件这一句写成了 SHOW EVENTs,大小写无所谓,习惯上全大写。
Status 那一列写着 ENABLED 还是 DISABLED。

Ends 是 NULL 就说明这个事件没写收工时刻,会一直跑下去。
Originator 那一列是干什么的?
把这个事件完整的定义原样打出来。

回显里那些 ON COMPLETION、ENABLE 是你没写它也会补上的。
跟第 7 章 SHOW CREATE VIEW 一个道理,服务器补全了默认值再还给你。
NEW 和 OLD 是触发器专有的,事件不针对某一行,压根没有这两个名字。
跟触发器最不一样的一点。

触发器只能删了重建,事件一句 ALTER 就改完了。
改完之后它原来排的那次执行还算数吗?
想改哪一样就写哪一行,别的不写就不动。

课件这一行印着 IF NOT EXISTS,ALTER EVENT 压根没有这个子句。
ON COMPLETION NOT PRESERVE 的事件跑完就没了,也就没得改了。
那哪一句后面才能写 IF NOT EXISTS?
一句话里可以一次改好几样。

DROP EVENT,跟删触发器一个样子。

删掉之后它排的那些执行全都取消,已经跑过的结果留在表里。
跑完就没的事件不用删,它自己已经不在了。
停用和删除,这两件事差在哪?
课件这一行的 IF NOT EXISTS 又写错了,该是 IF EXISTS。

建、查、改、删,比触发器多一条 ALTER。

这三条哪一条最容易忘?
一样被数据碰醒,一样被时间叫醒。

| 业务需求 | 该用哪个 |
|---|---|
| 插入成绩为空时自动改成 0 | |
| 改专业时记一条修改日志 | |
| 每天凌晨两点备份订单表 | |
| 删学生时同步删他的选课 | |
| 每周汇总一次平均分 | |
| 下班之后把临时表清一次 |
判断只看一条:叫醒它的是一次数据操作,还是一个时刻。
两张图并排,把这一章七条语句收在一起。

| 触发器 | 事件 | |
|---|---|---|
| 谁叫醒 | 增删改 | 时间 |
| NEW/OLD | 有 | 没有 |
| 改法 | 重建 | ALTER |
| 前提 | 无 | 开调度器 |
考试最爱考的就是这张表的第二行和第三行。
下一章讲用 Python 连 MySQL,跟这一章有什么关系?