当前位置:首页 > PHP > 正文内容

在MyISAM引擎中使用事务会怎样

高老师6年前 (2019-12-31)PHP2073

众所周知MyISAM引擎不支持事务,但是我只是知道不支持事务,并未测试具体的表现是什么,测试代码如下:

try
{
    //开启事务
    Db::startTrans();

    //(1).id为1的数据name字段修改为gao
    $isUpdate1 = Db::table('member')->where(['id' => 1])->update([
        'name' => 'gao1'
    ]);
    if (!$isUpdate1)
    {
        throw new Exception('更新第1条数据失败,事务已经回滚.');
    }

    //(2).id为2的数据name字段修改为chen
    $isUpdate2 = Db::table('member')->where(['id' => 2])->update([
        'name' => 'chen'
    ]);
    if (!$isUpdate2)
    {
        throw new Exception('更新第2条数据失败,事务已经回滚.');
    }

    // 提交事务
    Db::commit();

}
catch (Exception $exception)
{
    //事务回滚
    Db::rollback();
    echo $exception->getMessage() . PHP_EOL;
}

通过测试发现MyISAM直接忽视开启事务,提交事务,回滚事务,上面的代码相当于你没有写开启事务,提交事务,事务回滚的效果一样,只要有数据库操作一律直接执行。完全等同于下面的代码:

try
{
    //(1).id为1的数据name字段修改为gao
    $isUpdate1 = Db::table('member')->where(['id' => 1])->update([
        'name' => 'gao1'
    ]);
    if (!$isUpdate1)
    {
        throw new Exception('更新第1条数据失败');
    }
    
    //(2).id为2的数据name字段修改为chen
    $isUpdate2 = Db::table('member')->where(['id' => 2])->update([
        'name' => 'chen'
    ]);
    if (!$isUpdate2)
    {
        throw new Exception('更新第2条数据失败');
    }
}
catch (Exception $exception)
{
    echo $exception->getMessage() . PHP_EOL;
}

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/113.html

分享给朋友:

“在MyISAM引擎中使用事务会怎样” 的相关文章

PHP函数赋值给一个变量的另类用法

PHP函数赋值给一个变量的另类用法

<?php   function  go($str) { echo'I\'m '.$str;  }   $goto='go';   $goto('gaojiufeng'...

cookie跨域,cookie p3p跨域

cookie跨域,cookie p3p跨域

最近在公司开发一个新的项目假设项目域名是a.com,需要接入b.com的单点登陆系统。(1).首先我们会在a.com的登陆页面用iframe引入b.com来显示登陆界面,实际上登陆验证操作都是在b.com上面(2).当b.com验证通过,会在前端ajax请求a.com的回调地址,这个回调地址目的就是...

PHP Warning:  ftok(): Project identifier is invalid

PHP Warning: ftok(): Project identifier is invalid

在使用ftok生成ipc进程通信key尝试将第二个参数项目标识符传入字符串报错:PHP Warning:  ftok(): Project identifier is invalid,查阅资料发现第二个字符串只能是1个字符串,长度为1....

php elasticsearch基础使用

php elasticsearch基础使用

elasticsearch的操作都是基于http协议的,已经有现成的php类库,composer安装即可。{     "require": {        &...

 thinkphp5定时任务,tp5定时任务,thinkphp定时任务,php定时任务,php定时器

thinkphp5定时任务,tp5定时任务,thinkphp定时任务,php定时任务,php定时器

本教程使用的定时任务基于EasyTak,EasyTask官方文档:https://gitee.com/392223903/EasyTask(1).安装tp5.0或者5.1composer create-project topthink/think=5.0.* tp5&n...

thinkphp6定时任务,tp6定时任务,thinkphp定时任务,php定时任务,php定时器

thinkphp6定时任务,tp6定时任务,thinkphp定时任务,php定时任务,php定时器

本教程使用的定时任务基于EasyTak,EasyTask官方文档:https://gitee.com/392223903/EasyTask(1).安装tp6composer create-project topthink/think tp(2).安装定时任务compos...