美文网首页
数据库高级操作——事务

数据库高级操作——事务

作者: Harper324 | 来源:发表于2019-03-30 22:48 被阅读0次

事务

数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全执行,要么完全地不执行。MySQL事务主要用于处理操作量大,复杂度高的数据。

一、事物的四个属性(ACID)

  • 原子性(Atomicity): 一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
  • 一致性(Consistency): 在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
  • 隔离性 (Isolation):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable).
  • 持久性(Durability): 事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

二、事务控制语句

  • BEGINSTART TRANSACTION 显式地开启一个事务;
  • COMMIT 也可以使用 COMMIT WORK,不过二者是等价的。COMMIT 会提交事务,并使已对数据库进行的所有修改成为永久性的;
  • ROLLBACK 也可以使用 ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;
  • SAVEPOINT identifier,SAVEPOINT 允许在事务中创建一个保存点,一个事务中可以有多个 SAVEPOINT;
  • RELEASE SAVEPOINT identifier 删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;
  • ROLLBACK TO identifier 把事务回滚到标记点;
  • SET TRANSACTION 用来设置事务的隔离级别。InnoDB 存储引擎提供事务的隔离级别有READ U NCOMMITTED、READ COMMITTED、REPEATABLE READ 和 SERIALIZABLE。

三、MYSQL 事务处理

1、用 BEGIN, ROLLBACK, COMMIT来实现
  • BEGIN 开始一个事务
  • ROLLBACK 事务回滚
  • COMMIT 事务确认
2、直接用 SET 来改变 MySQL 的自动提交模式:
  • SET AUTOCOMMIT=0 禁止自动提交
  • SET AUTOCOMMIT=1 开启自动提交

例子:

示例表:学生表(student):

id name age sex
1 张三 18
2 李四 20
  • 成绩表(score):
id student_id subject_id score
1 1 1001 80
2 2 1002 60
3 1 1001 70
4 2 1002 60.5
# 给学生表和成绩表里面同时插入一条记录:
BEGIN;

INSERT INTO student VALUES(3,'王五',19,'女');

INSERT INTO score VALUES(5,3,89,1001);

COMMIT;


mysql> select*from student;
+----+------+-----+------+
| id | name | age | sex  |
+----+------+-----+------+
|  1 | 张三 |  18 | 男   |
|  2 | 李四 |  20 | 女   |
|  3 | 王五 |  19 | 女   |
+----+------+-----+------+
3 rows in set (0.07 sec)

#使用回滚
BEGIN;

INSERT INTO student VALUES(4,'李敏',19,'女');

rollback;

mysql> select*from student;
+----+------+-----+------+
| id | name | age | sex  |
+----+------+-----+------+
|  1 | 张三 |  18 | 男   |
|  2 | 李四 |  20 | 女   |
|  3 | 王五 |  19 | 女   |
+----+------+-----+------+
3 rows in set (0.07 sec)

#设置非自动提交
SET AUTOCOMMIT=0;
BEGIN;
INSERT INTO student VALUES(4,'夏雨',20,'女');
INSERT INTO score VALUES(6,4,99,1001);
COMMIT;

mysql> select*from student;
+----+------+-----+------+
| id | name | age | sex  |
+----+------+-----+------+
|  1 | 张三 |  18 | 男   |
|  2 | 李四 |  20 | 女   |
|  3 | 王五 |  19 | 女   |
|  4 | 夏雨 |  20 | 女   |
+----+------+-----+------+
3 rows in set (0.07 sec)


相关文章

  • 2019-07-08

    数据库 MySQL数据库的基本操作(增删改查)高级操作视图备份和还原事务触发器函数存储过程 什么是数据库?数据库(...

  • 数据库高级操作——事务

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

  • 数据库的一些基本概念

    1. 事务 事务是数据库中一个单独的执行单元(Unit),它通常由高级数据库操作语言(SQL等)或编程语言(Jav...

  • 事务的理解

    一、事务 什么是事务?事务就是一系列对数据库操作的语句集合,它是对数据库操作的最小逻辑单元,在数据库中,事务主要是...

  • 数据库事务和锁

    数据库的事务什么是数据库的事务?数据库事务(transaction)是访问并发可能操作各种数据项的一个数据库操作序...

  • 数据库事务

    数据库事务 事务的四个特性 数据库事务,简单来讲,就是把一堆的数据库操作(增删改查)组合成一个操作,这个操作要么成...

  • 数据库事务&并发异常&锁机制

    数据库事务:操作数据库的一个程序单元,包含查看或者更新的一组操作。 数据库事务的特性:1)原子性:事务的一组操作不...

  • 白话数据库事务

    一、数据库事务 数据库事务 (transaction) 是访问或者操作各种数据项的一个数据库操作序列,这些操作要么...

  • Spring学习之事务管理基础

    Spring学习之事务管理基础 数据库事务相关概念 事务的定义 事务,一般指的是数据库事务,是指数据库操作的时候,...

  • 数据库事务的四个基本性质(ACID)?

    数据库事务概念 什么是数据库事务? 事务(transaction)是由指逻辑上对数据的的一组操作, 这组操作要么一...

网友评论

      本文标题:数据库高级操作——事务

      本文链接:https://www.haomeiwen.com/subject/prsebqtx.html