MySQL事务处理

来源:互联网 发布:php 图片水印 编辑:程序博客网 时间:2024/06/07 13:27

事务是保证底层数据完整的重要手段,没有事务支持的数据库应用,那将非常脆弱。

事务是由一步或者几步数据库操作序列组成的逻辑执行单元,这些操作要么全部执行,要么全部放弃执行。

事务是DBMS的执行单位,不是任意的数据库操作序列都能成为事务。事务具有如下4个基本特征(ACID):

  1. 原子性(Atomicity):事务是应用中不可再分的最小逻辑执行体。
  2. 一致性(Consistency):事务执行的结果必须使数据库从一个一致性状态,变到另一个一致性状态。当数据库只包含事务成功提交的结果时,数据库处于一致性状态。
  3. 隔离性(Isolation):并发执行的事务之间不能相互影响,任何一个事务的内部操作对其他事务来说都是隔离的。
  4. 持续性(Durability):事务一旦提交,对数据库所做的任何改变都要记录到永久存储器中
MYSQL事务处理主要有两种方法。
  1、用begin,rollback,commit来实现
       begin 开始一个事务
       rollback 事务回滚
       commit  事务确认
   2、直接用set来改变mysql的自动提交模式
       MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过
     set autocommit=0  禁止自动提交,开启了事务
     set autocommit=1 开启自动提交
  来实现事务的处理。
MySQL默认关闭事务(即打开自动提交)。
事务回滚有两种方式:显示回滚和自动回滚。
  1. 显示回滚:使用rollback;
  2. 自动回滚:系统出错或者强行退出。
一个MySQL的命令行窗口代表一次连接Session,在该窗口中设置set autocommit = 0不会影响其他连接。此外,如果不想关闭整个窗口的自动提交,而只是想临时性地开始事务,则可以使用start tranction 或begin两个命令,它们都表示临时性地开始一次事务,处于start tranction 或begin后的DML不会立即生效,除非使用commit显示提交事务,或者执行DDL、DCL语句来隐式提交事务。
除此之外,MySQL还提供了savepoint来设置事务的中间点,可以让事务回滚到指定中间点。回滚到中间点因为依然处于事务之中,所以不会结束当前事务。
savepoint a;rollback to a; 



0 0