mysql事务

事务(mysql)

第一章 事务概念

1、事务机制在程序开发过程中有着很大的作用。在现实生活中,经常进行转账操作,分为两个步骤:转入与转出,只有当两部分都完成才认为转账成功。

2、如果其中任意操作异常没有执行成功,则会导致两账户的金额不同步,造成错误,为了避免上述错误,数据库引入事务。

3、事务:就是对数据库的一组操作,可以为一条或多条 sql 执行,其特点:要么都做,要么都不做。

在数据库中使用事务时,必须先开启事务,命令如下:

start transaction;

事务开启后就可以执行 sql 语句,sql 语句执行完成后,需要相应语句来提交事务,可使用如下命令来结束事务

#提交
commit;
#回滚
rollback;

sql 语句是自动提交的,事务需要手动提交:commit

如果不想提交事务,可通过 rollback 来回滚事务,使事务结束。

已提交的事务不能回滚

案例操作:

创建表:

create table account(
	id int primary key auto_increment,
    name varchar(40),
    money float
);
#插入数据
insert into account(name,money) values('a',100);
insert into account(name,money) values('b',100);

演示事务操作:

  • 首先开启事务
    • start transaction;
      
  • 转账
    • update account set money=money-10 where name='a';
      update account set money=money+10 where name='b';
      
  • 提交事务
    • commit;
      

通过 a 账户向 b 账户转入 10元,结果如下:

注意:当 update 中出现错误,会导致事务不执行,这样保证了事务的同步性。

而事务有严格的定义,必须满足 4 个特性:

  • 原子性(atomicity)
    • 指一个事务必须视为一个不可分割的最小工作单元,当事务中所有的操作完成后,才算整个事务执行成功,事务中有一条 sql 失败,则执行成功的 sql 也必须撤销,数据库的状态回退到执行事务前的状态
  • 一致性(consistency)
    • 指事物将数据库从一种状态转换为另一种状态;例如事务执行失败,数据库回退到执行事务前的状态。
  • 隔离性(isolation)
    • 也称并发控制、可串性化、锁等,指事务各自执行,互不干扰
  • 持久性(durability)
    • 事务操作一旦提交,其修改的数据就会永久保存在数据库中。
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《mysql事务》
文章链接:https://zhuji.vsping.com/3484.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。