MySQL——事务

事务

使用场景

处理操作两大,复杂度高的数据

  • 举个例子:在人员管理系统中,你准备删除一个人员,这是你需要删除人员的基本资料、相关的信息(信箱、文章等等)

满足条件

1.原子性

  • 一个事务中的所有操作,要么全完成,要么全部完成
  • 事务在执行中发生错误,会被回滚到事物开始前的状态

2.一致性

  • 事务开始前和开始后,完整性没有被破坏

3.隔离性

  • 事物隔离分为不同级别
  • 读未提交
  • 读提交
  • 可重复读
  • 串行化

4.持久性

  • 事务处理结束后,对数据的修改就是永贵的,即便系统故障也不会丢失

注意事项

  • 在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作。
  • 因此要显式地开启一个事务务须使用命令 BEGIN 或 START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。

事物控制语句

  • BEGIN 或 START TRANSACTION
  • COMMIT等价于COMMIT WORK
  • ROLLBACK等价于ROLLBACK WORK 回滚到结束用户的事务,并撤销正在进行的所有未提交的修改
  • SAVEPOINT identifier,SAVEPOINT允许在食物中创建一个保存点,一个事务可以有多个SAVEPOINT
  • RELEASE SAVEPOINT identifier删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常
  • ROLLBACK TO identifier把事务回滚到标记点;
  • SET TRANSACTION 用来设置事物的隔离级别。InnoDB 存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ 和 SERIALIZABL

两种主要方法

方法一

  • BEGIN 开始一个事务
  • ROLLBACK 事务回滚
  • CONNIT 事务确认

方法二

  • SET AUTOCOMMIT=0 禁止自动提交
  • SET AUTOCOMMIT=1 开启自动提交

insert into value 与 insert into values的差异在效率上

  • 插入单行时,values比value快
  • 插入多行时,value比values快
原文地址:https://www.cnblogs.com/ceiling-/p/14410290.html