MySQL事务小结

事务基本特性(ACID)

  1. 原子性(Atomicity):事务开始后全部操做,要么所有作完,要么所有不作,不可能停滞在中间环节。事务执行过程当中出错,会回滚到事务开始前的状态,全部的操做就像没有发生同样。也就是说事务是一个不可分割的总体,就像化学中学过的原子,是物质构成的不可分割单位。
  2. 一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。
  3. 隔离性(Isolation):同一时间,只容许一个事务请求同一数据,不一样的事务之间彼此没有任何干扰。
  4. 持久性(Durability):事务完成后,事务对数据库的全部更新将被保存到数据库,不能回滚。

事务语句

MySQL使用以下的语句来标识事务的开始:数据库

start transaction

或者测试

begin

事务成功后,使用以下的语句来标识事务的成功:code

commit

当事务逻辑出现异常时,可使用以下的语句来标识事务的取消:事务

rollback

事务操做

事务处理用来管理 INSERT 、UPDATE 和 DELETE 语句,没法管理不会改变数据的 SELECT 查询语句,也没法管理 CREATE 或 DROP 操做。事务操做隔离了其中被操做数据状态改变的可见性,同时使事务内的屡次数据更新操做具备了原子性,即要么同时成功,要么所有失败。ci

建立测试表 test:it

create table test(a int, b char(5));

执行事务操做:io

start transaction;

insert into test values('1', 'right');
insert into test values('2', 'wrong');
update test set b = 'right' where a = 2;
select * from test;

commit;

上述操做中,一个事务内包含两次独立的插入操做和一次更新操做,以及一次查询所有数据的操做。因为事务的隔离性,当事务结束前,其余链接的查询语句将没法查询到插入的这两条数据,也没法对其进行更新操做,只有处于同一事务的查询语句和更新语句能够针对该新插入的数据进行查询或更新。当执行了 commit 语句后,该事务内的操做将所有生效,使其余链接也能够对此事务更新后的数据进行操做。table

当上述事务中的语句若是出现执行失败,或在事务提交前执行了 rollback 语句,那么无论语句已经执行成功了多少条,其数据库状态都将恢复到所有语句执行以前的状态。test

相关文章
相关标签/搜索