MySql的事务控制(TCL语言)

⒈事务

  一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。

⒉事务的特性(ACID)

  1.原子性(Atomicity):一个事务不可再分割,要么都执行要么都不执行。

  2.一致性(Consistency):一个事务执行会使数据从一个一致状态切换到另外一个一致状态。

  3.隔离性(Isolation):一个事务的执行不受其它事务的干扰。

  4.持久性(Durability):一个事务一旦提交,则会永久的改变数据库的数据。

⒊事务的创建

  1.隐式事务:事务没有明显的开启和结束的标记,例如insert、update和delete语句

  2.显式事务:事务具有明显的开启和结束的标记。前提,必须先设置自动提交功能为禁用。set autocommit = 0;

        显示当前事务状态 show variables like 'autocommit';

⒋事务过程

  ①开启事务

1 set autocommit = 0;
2 start transaction;    #可选

  ②编写事务中的sql语句(select、insert、update、delete)

1 语句1;
2 语句2;
3 ....

  ③结束事务

1 commit;    #提交事务
2 rollback;    #回滚事务

⒌事务的隔离级别

级别 脏读 不可重复读 幻读

read uncommitted

读未提交(数据)

read committed

读已提交(数据)

repeatable read

可重复读

serializable

串行化

      MySql中默认第三个隔离级别:repeatable read(可重复读)

      Oracle中默认第二个隔离级别:read committed(读已提交)

      查看隔离级别:select @@tx_isolation

      设置隔离级别:set session|global transaction isolation level

⒍SAVEPOINT回滚点

  在sql中设置

1 语句1;
2 savepoint a;    #设置回滚点
3 语句2;
4 rollback to a;    #回滚到指定的回滚点

猜你喜欢

转载自www.cnblogs.com/fanqisoft/p/10698620.html