事务的概念以及处理方式

1. 概念

数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全执行,要么完全地不执行。

2.事务的特性(ACID)
  • 原子性(Atomicity): 事务中的所有数据库操作是一个整体,是不可分割的,不会只是执行某一段数据库操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
  • 一致性(Consistency): 如果一个事务原子地在一个一致地数据库中独立运行,那么在它执行之后,数据库的状态一定是一致的。
  • 隔离性 (Isolation):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable).
  • 持久性(Durability): 事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
3. 使用
  1. BEGIN 开始一个事务

  2. ROLLBACK 事务回滚

  3. COMMIT 事务确认

  4. 直接用 SET 来改变 MySQL 的自动提交模式:
    SET AUTOCOMMIT=0 禁止自动提交
    SET AUTOCOMMIT=1 开启自动提交

mysql> CREATE TABLE student (
 `id` INT NOT NULL,
`name` VARCHAR(100) NOT NULL,
`age` INT NOT NULL,
`sex` VARCHAR(100) NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

mysql> select * from student;   //empty
mysql> SET AUTOCOMMIT=0;
mysql> begin;  //开始事务
mysql> INSERT INTO student VALUES(1,'张三',18,'男');
mysql> INSERT INTO student VALUES(2,'李四',20,'女');
mysql> commit; // 提交事务
mysql>  select * from student;
+------+------+------+------+
| id   | name | age | sex  |
+------+------+------+------+
| 1    | 张三 |  18  |  男  |
| 2    | 李四 |  20  |  女  |
+------+------+------+------+

mysql> begin;    //开始事务
Query OK, 0 rows affected (0.00 sec)
 
mysql>  INSERT INTO student VALUES(3,'王五',19,'女');
mysql> rollback;   
Query OK, 0 rows affected (0.00 sec)
 
mysql>   select * from student;   // 因为回滚所以数据没有插入
+------+------+------+------+
| id   | name | age | sex  |
+------+------+------+------+
| 1    | 张三 |  18  |  男  |
| 2    | 李四 |  20  |  女  |
+------+------+------+------+
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • java事务的处理 转 https://www.cnblogs.com/Bonker/p/5417967.html...
    小小的Jobs阅读 5,364评论 0 1
  • 一、事务 1、事务四要素:ACID 对于事务,我之前的理解是很粗糙的,不就是为了保证操作的原子性么?一般订单系统或...
    张伟科阅读 5,169评论 0 5
  • 本文约5000字,建议阅读时间10分钟 关于数据库的事务,相信每个码农都有接触,也相信都遇到过与之相关的坑。本文旨...
    错乱的三元运算阅读 4,481评论 0 5
  • 事务(Transaction)是数据库区别于文件系统的重要特性之一。 在文件系统中, 如果正在写文件, 但是操作系...
    好好学习Sun阅读 4,636评论 0 5
  • 1、概述   事务是数据库区别于文件系统的重要特征之一,其用于保证数据库的完整性,事务能使批量的SQL语句要么完全...
    黒猫阅读 4,114评论 0 2