事件被 MySQL 编写者设计出来,本质是为了当应用程序访问数据库的时间,事件能够简化我们的编程模子,不需要我们去思量各种各样的匿伏错误和并发问题。可以想一下当我们使用事件时,要么提交,要么回滚,我们不会去思量网络异常了,服务器宕机了,同时更改一个数据怎么办对吧?因此事件本质上是为了应用层服务的,而不是伴随着数据库系统天生就有的。
备注:我们后面把 MySQL 中的一行信息,称为一行纪录。
三、事件的版本支持
在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事件, MyISAM 不支持。我们可以使用指令 show engines\G 查看各种引擎的属性:
四、事件提交方式
事件的提交方式常见的有两种:
主动提交
手动提交
查看事件提交方式:show variables like 'autocommit';
我们可以用 SET 来改变 MySQL 的主动提交模式:SET AUTOCOMMIT=0; 禁止主动提交。SET AUTOCOMMIT=1; 开启主动提交。
五、事件常见操纵方式
1. 准备工作
设置隔离级别
我们将隔离级别设置成最低是为了方便我们观察征象。
为了便于演示,我们将 mysql 的默认隔离级别设置成读未提交。具体操纵我们后面会具体讲,现在以使用为主:
set global transaction isolation level read uncommitted;
上面全部的创建生存点、插入数据的操纵都是一个事件,那么我们操纵失误了,想要撤回 Mike 的数据,我们就可以定向地回滚,可以回滚到指定的位置,比方我们想撤回 Mike 的数据,我们回滚到 s2 的生存点即可,对应的语句为:rollback to s2;,此时我们再从另一个终端查看该表时,就会发现 Mike 的数据已经没有了,如下: