做百度网站一年多少钱,惠州h5网站建设,江苏网站建设平台,科技软件公司网站模板下载目录
1.事务的简介#xff1a;
2.使用事务
2.1 开启事务
2.2 自动提交
2.3 使用范围
2.4 事务的属性 1.事务的简介#xff1a;
介绍事务之前#xff0c;我们先来看一个经典的场景#xff1a;银行转账。 假如a想要把自己的账户上的10万块钱转到b账户上#xff0c;这…目录
1.事务的简介
2.使用事务
2.1 开启事务
2.2 自动提交
2.3 使用范围
2.4 事务的属性 1.事务的简介
介绍事务之前我们先来看一个经典的场景银行转账。 假如a想要把自己的账户上的10万块钱转到b账户上这时就需要先从a账户中扣除10万元再给b账户上加上10万元。 如果从a账户中扣除10万元时发生了错误会出现什么情况嫩结果可能导致一下两种情况。 a账户中的10万元没有扣除成功b账户加上了10万元。a账户中的10万元扣除成功b账户没有加上10万元。 这种情况是绝对不允许的“a账户扣除10万元”和“b账户加上10万元”这两个操作应给作为一个不可分割的整体操作才行。如果“a账户扣除10万元”的操作失败那么“b账户加上10万元”的操作应该取消。 实际上将多个操作作为一个整体来处理像这样的功能我们称为“事务”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启动了事务之后大多数操作都可以通过回滚来进行还原。不过下面这些操作时无法还原的这一点要记住。 drop databasedrop tabledrop viewalter table 2.4 事务的属性
在MySQL中事务有严格的定义必须同时满足四个属性才行原子性atomicity一致性consistency隔离性isolation持久性durability。这四个属性通常又被称为“ACID”特性。 原子性事务作为一个整体来执行所有操作要么都执行要么都不执行。一致性事务应确保数据库的状态从一个一致状态转变为另一个一致状态。隔离性当多个事务并发执行多个事务同时执行时一个事务的执行不应该影响其他事务的执行。持久性事务一旦提交它对数据库的修改应该永久保存在数据库中。