美文网首页
MySQL事务处理

MySQL事务处理

作者: LannisterWF | 来源:发表于2018-08-03 22:01 被阅读0次

MySQL 事务主要用于处理操作量大,复杂度高的数据。在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务(默认引擎就是这个)。事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。事务用来管理 insert,update,delete 语句。

一般来说,事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。

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

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

事务控制语句:

BEGIN或START TRANSACTION;显式地开启一个事务;

COMMIT;也可以使用COMMIT WORK,不过二者是等价的。COMMIT会提交事务,并使已对数据库进行的所有修改成为永久性的;

ROLLBACK;有可以使用ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;

SAVEPOINT identifier;SAVEPOINT允许在事务中创建一个保存点,一个事务中可以有多个SAVEPOINT;

RELEASE SAVEPOINT identifier;删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;

ROLLBACK TO identifier;把事务回滚到标记点;

SET TRANSACTION;用来设置事务的隔离级别。InnoDB存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。

MYSQL 事务处理主要有两种方法:

1、用 BEGIN, ROLLBACK, COMMIT来实现

BEGIN 开始一个事务

ROLLBACK 事务回滚

COMMIT 事务确认

2、直接用 SET 来改变 MySQL 的自动提交模式:

SET AUTOCOMMIT=0 禁止自动提交

SET AUTOCOMMIT=1 开启自动提交

测试

开始事务

select * from store;

先查看一下store表中的两条记录。

然后在staff表中增加一条记录,因为store的manager_staff_id是关于staff的外键。

insert into staff values('3','tywin','lannister','7',null,null,'1','1','1','1','2018-08-03 22:00:00');

接着要commit,正式提交这条命令,让修改生效。

在store表中插入一条数据

insert into store(store_id,manager_staff_id,address_id,last_update) values('3','3','3','2018-08-03 21:47:50');

接着

rollback

这条命令让上面这句插入语句无效,查看store表还是只有两条记录。

重复上面这条insert语句,再加上commit,修改就有效了,再来看看store表,多了一条记录。

相关文章

  • MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔

    MySQL 事务处理 简单介绍事务处理: MySQL 事务主要用于处理操作量大,复杂度高的数据。 比如说,在人员管...

  • 关于 tp5 事务操作总结

    前提: 使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用...

  • MySql___(7) MySQL 必知必会

    第26章 管理事务处理 26.1 事务处理 并非所有引擎都支持事务处理正如第21章所述,MySQL支持几种基本...

  • tp6进行事务操作

    使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用 Inn...

  • mysql之事务处理

    mysql之事务处理,在mysql版本5.5之前的引擎是MyISAM,后调整为支持事务的InnoDB。 问题:1、...

  • MySQL事务处理

    mysql并非所有引擎都支持事务处理管理。最常用的两种引擎MyISAM 和InnoDB 前者不支持明确的事务处理管...

  • mysql事务

    mysql的InnoDB引擎支持事务,它用COMMIT、SAVEPOINT及ROLLBACK支持事务处理。事务就是...

  • 数据库锁及事务整理

    参考文档 MySQL的事务和隔离级别理解事务 - MySQL 事务处理机制《MySQL技术内幕》读书笔记一文说尽M...

  • 数据库与数据仓库的区别

    数据库 Database (Oracle, Mysql, PostgreSQL)主要用于事务处理,数据仓库 Dat...

  • 事物处理

    MySQL 事务 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。 事务处理可以...

网友评论

      本文标题:MySQL事务处理

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