SQL的事务

时间:2021-08-16
本文章向大家介绍SQL的事务,主要包括SQL的事务使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

SQL的事务

在我们现实生活中,都会经历不少的挫折,一个人的一生中,绝对不会是一帆风顺,人生的路就如小河一样弯弯曲曲。这个时候,我们应该怎么办呢?是逃避?或投降?还是视而不见?这样都不行,我们需要的是--勇敢的奋斗。

什么是事务

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

简单的说:事务就是将一堆的SQL语句(通常是增删改操作)绑定在一起执行,要么都执行成功,要么都执行失败,即都执行成功才算成功,否则就会恢复到这堆SQL语句执行之前的状态。

事务的四个特性ACID

原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)

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

隔离级别

  • 读未提交(Read uncommitted) 安全性最差,可能发生并发数据问题,性能最好
  • 读提交(read committed) Oracle默认的隔离级别
  • 可重复读(repeatable read)MySQL默认的隔离级别,安全性较好,性能一般
  • 串行化(Serializable) 表级锁,读写都加锁,效率低下,安全性高,不能并发

MySQL的事务处理

  • 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务
  • 事务处理可以用来维护数据的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行
  • 事务用来管理 insert、update、delete 语句,因为这些操作才会“破坏”数据,查询select语句是不会的
  • MySQL默认数据库的事务是开启的,执行SQL后自动提交。
  • MySQL的事务也可以改成手动提交,那就有两个步骤:先开启,写完SQL后,再手动提交。

步骤为:

  1. 开启事务:start transaction;
  2. 需要执行的SQL语句集
  3. 结束事务:commit(提交事务)或rollback(回滚事务)。

原文地址:https://www.cnblogs.com/fangweicheng666/p/15149807.html