目录
1.事务的简介:
介绍事务之前,我们先来看一个经典的场景:银行转账。
实际上,将多个操作作为一个整体来处理,像这样的功能我们称为“事务”(transaction)。将事务开始之后的处理结果反映到数据库中的操作称为“提交”(commit),不反映到数据库而是回复成原来状态的操作称为“回滚”(rollback)。
2.使用事务
如果使用delete from product:这样的SQL语句会把整个表的数据都给删除,并且是无法恢复的。如果我们希望删除之后还能恢复,此时可以使用事务来实现。
2.1 开启事务
语法:
start transaction;
此时事务已经开启了。
开启事务后再去执行下面的操作。
-- 删除数据
delete from student;
--查看表
select *from student;
删除后,student表里面的数据都没有了。
由于前面开启了事务,所以现在我们有两个选择:commit或rollback。如果想要回复数据,我们可以使用rollback语句,然后再执行查看表的代码。
-- 回滚
rollback;
-- 查看表
select *from student;
执行后,删除的数据也回来了。
如果不执行rollback而是commi,那么删除操作的结果就会反映到数据库中,然后所有的数据都会被删除。
2.2 自动提交
默认情况下,也就是不手动开启事务,MySQL的处理都是直接被提交的。也就是说,所有的操作都会自动执行“commit”。
自动提交事务功能在默认情况下处于开启状态的,如果我们手动使用start transaction开启了事务,那么后面就不会自动提交,而必须由我们手动执行commit来提交。
当然也可以通过下面的语句将自动提交功能关闭。
set autocommit = 0;
关闭自动提交功能后,如果想要重新开启该功能,我们可以执行下面的代码来实现:
set autocommit = 1;
2.3 使用范围
MySQL启动了事务之后,大多数操作都可以通过回滚来进行还原。不过下面这些操作时无法还原的,这一点要记住。
2.4 事务的属性
在MySQL中,事务有严格的定义,必须同时满足四个属性才行:原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability)。这四个属性通常又被称为“ACID”特性。