2.回滚 rollback

职业的基本原理

 

一般的执行,之所以是马上实践并生效,因为默许的,MySQL对sql语句的施行是电动提交的!所以,开启三个政工的面目,就是停业了原先的自行提交的魔法,而是由用户手动提交(利用commit语句)!

总括专门的工作的步调:

1,  开启事务

二,  要是实行成功,就交由commit

三,  假使有其余一条sql语句实践倒闭,则回滚rollback!

 

事务管理最特异的就是借还债。上面以张三向李肆还一千元为例

先是查看数据库中分别的钱数

图片 1

下边是拍卖还债事情的代码:

<?php 

/**
* MySQL实现事务操作
*/

echo "<meta charset=utf-8>";

// 1 连接数据库
$link = @mysql_connect('localhost','root','') or die('连接数据库失败');
mysql_select_db('test',$link);
mysql_query('set names utf8');

// 2  开启事务
mysql_query("start transaction");
//设置一个变量,用来判断所有sql语句是否成功
$flag = true;

// 2.1执行事务中的一组sql语句 

// 李四的money+1000
$sql = "update pdo set mone=money+1000 where name='李四'";
$res = mysql_query($sql);
if (!$res) {
    //若sql语句执行失败,把$falg设置为false
    $flag = false;
}

//张三的money-1000
$sql = "update pdo set money=money-1000 where name='张三'";
$res = mysql_query($sql);
if (!$res) {
    //若sql语句执行失败,把$falg设置为false
    $flag = false;
}

// 2.2 判断事务是否执行成功
if ($flag) {
    //所有sql语句执行成功,把sql语句提交
    mysql_query('commit');
    echo "还钱成功!";
}else{
    // 如其中一条执行失败,则回滚到事务开启之前的状态
    mysql_query('rollback');
    echo "还钱失败!";
}

结果:

图片 2

图片 3

上面,我们有意识把在那之中多个字段写错,看看事务是或不是健康管理,数据库中的钱数是或不是有变化!

// 李四的money+1000
$sql = "update pdo set mone=money+1000 where name='李四'";  //把moeny字段错写成mone

结果:

图片 4

图片 5

结果是还债难倒,并且数据库中分头的钱数未有成形,表明当某一条语句未试行成功时,事物不会提交,而会回滚,把数据复苏到起来业务以前的本来面目状态,那也是使用职业的效益,即唯有当事情中有着sql语句全体进行成功,事务才会交到,不然会回滚!

下篇会介绍PDO中事务管理

步骤:
一.拉开事务 start transaction
当大家张开3个作业的时候,大家对sql的操作都发出在内部存款和储蓄器中,可是从未…

步骤:

MySQL的业务的拍卖,MySQL事务管理

步骤:

一.敞开事务 start transaction

当大家展开二个事情的时候,大家对sql的操作都发生在内部存款和储蓄器中,不过从未真正的反馈到数据库磁盘的文本中!

2.回滚 rollback

回滚,就是过来到事情开启在此以前的最原始的意况!

留意:回滚操作会自动的关门三个业务,借使想再也奉行工作,需求重新展开事务!

3.提交 commit

 

 

当大家伸开二个事情的时候,大家对sql的操作都爆发在内部存款和储蓄器中,可是从未真正的上报到数据库磁盘的文本中!

壹.拉开事务 start
transaction