码迷,mamicode.com
首页 > 数据库 > 详细

MySql事务

时间:2020-01-28 09:14:00      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:连接   数据库   update   nts   ble   val   其他   --   innodb   

  • 当一个业务逻辑需要多个sql完成时,如果其中某条sql语句出错,则希望整个操作都退回
  • 使用事务可以完成退回的功能,保证业务逻辑的正确性
  • 事务四大特性(简称ACID)
    • 原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行
    • 一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致
    • 隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的
    • 持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障
  • 要求:表的类型必须是innodb或bdb类型,才可以对此表使用事务
  • 使用事务的情况:当数据被修改时,包括insert、update、delete
  • 查看表的类型(查询通过表的创建语句)
show create table students;
  • 修改表的类型
alter table 表名 engine=innodb;
  • 事务语句
开启begin;
提交commit;
回滚rollback;
  1. begin与commit之间,所有对库修改的语句都临时在内存中保存。只要没执行commit。可以随时通过rollback回滚。

  2. 执行commit后,修改的内容固化到硬盘中。

  • 示例1

步骤1:打开两个终端,连接mysql,使用同一个数据库,操作同一张表
终端1:
select * from students;
------------------------
终端2:
begin;
insert into students(sname) values(张飞);
步骤2 终端1: select
* from students;
步骤3 终端2: commit;
------------------------ 终端1: select * from students;
  • 示例2

步骤1:打开两个终端,连接mysql,使用同一个数据库,操作同一张表
终端1:
select * from students;
------------------------
终端2:
begin;
insert into students(sname) values(张飞);

步骤2
终端1:
select * from students;

步骤3
终端2:
rollback;
------------------------
终端1:
select * from students;

 

MySql事务

标签:连接   数据库   update   nts   ble   val   其他   --   innodb   

原文地址:https://www.cnblogs.com/LiuYanYGZ/p/12237319.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!