本文实例讲解了PHP使用MySQL事物锁的实例,并备有注释加以详细说明

/**
 * 数据库连接
 * $conn = mysql_connect(‘localhost‘, ‘root‘, ‘‘);
 * mysql_select_db(‘test‘, $conn);
 *mysql_query("SET NAMES GBK");
 *支持事务的表必须是InnoDB类型
 *一段事务中只能出现一次:
 *mysql_query(‘START TRANSACTION‘);//开始事务
 *mysql_query(‘ ROLLBACK ‘);//回滚事务
 *mysql_query(‘COMMIT‘);//提交事务
 * 上面的是最原始的写法
 *事务锁:如果连个同步或异步同时更新同样的数据,那么我们就要用到事务锁住正在执行的sql语句,直到事务提交,下一条数据才能执行
 *如果一段事务中出现多次回滚事务,则在,提交事务时只将第一次回滚前至开始事务后对数据库的所有操作取消,第一次回滚后至提交事务前所有对数据库操作仍将有效,所以一般将回滚语句仅放在提交事务语句前
 *如果一段事务无提交语句,则从开始事务时以下的所有对数据库操作虽执行(执行方法返回对错),但对数据库无影响,但是在执行下段开始务语句时,前段事务自动提交
 * 以下示例是我结合现有框架写的测试文件
 * 提示:锁住的数据查询条件已经是唯一标识
*/
class test extends controller
{

    private $db;
    function __construct($options)
    {
        parent::__construct($options, []);
        $this->db = new MySql();
    }
    function run(){
        try {
            $this->db->beginTRAN();
            $state = $this->db->getField("SELECT state FROM test WHERE id = 1 FOR UPDATE");
            if($state == 2){
                throw new Exception(‘已完成!‘);
            }
            $data= array(
               ‘state‘ =>2
            );
            $res = $this->db->update(‘test‘,$data,"id=1");
            if(!$res){
                throw new Exception(‘更新成功!‘);
            }
            $this->db->commitTRAN();
            dump(‘成功‘);die;
        } catch ( Exception $e ) {
            $this->db->rollBackTRAN();
            dump($e->getMessage());die;
        }
    }
}
时间: 2024-08-05 20:45:31

本文实例讲解了PHP使用MySQL事物锁的实例,并备有注释加以详细说明的相关文章

mysql事物/锁

事物就是一组应该一起成功或一起失败的sql语句. 事物具有原子性,一致性,隔离性和持久性的特点: 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样.也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位.  2.一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 .比如AB互相转钱,无论怎么转,总额都不会变化. 3.

【转】Android实例剖析笔记(二)--用实例讲解Andriod的开发过程,以NotesList为实例介绍Android的菜单机制

原文网址:http://kb.cnblogs.com/page/78304/ 简介 android提供了三种菜单类型,分别为options menu,context menu,sub menu. options menu就是通过按home键来显示,context menu需要在view上按上2s后显示.这两种menu都有可以加入子菜单,子菜单不能种不能嵌套子菜单.options menu最多只能在屏幕最下面显示6个菜单选项,称为iconmenu,icon menu不能有checkable选项.多

实例讲解Oracle数据库设置默认表空间问题

实例讲解Oracle数据库设置默认表空间问题 实例讲解Oracle数据库设置默认表空间问题,阅读实例讲解Oracle数据库设置默认表空间问题,DBA们经常会遇到一个这样令人头疼的问题:不知道谁在Oracle上创建了一个用户,创建时,没有给这个用户指定默认表空间,所以这个用户就会采用默认的表空间——system表空 DBA们经常会遇到一个这样令人头疼的问题:不知道谁在Oracle上创建了一个用户,创建时,没有给这个用户指定默认表空间,所以这个用户就会采用默认的表空间——system表空间.导致系统

【智能算法】粒子群算法(Particle Swarm Optimization)超详细解析+入门代码实例讲解

喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于对鸟群捕食的行为研究 .该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型.粒子群算法在对动物集群活动行为观察基础上,利用群体中的个体对信息的共享使整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得最优解.

实例讲解如何使用C++操作MySQL数据库类

用C++操作MySQL数据库类: 注释:这几个类对处理不是很大数据量的操作是很理想的, 但不适宜特大型的数据的查询,因为源码中将查询到的数据直接放入了内存. /* *  project: *           通用模块 ( 用 c++ 处理  mysql 数据库类,像ADO ) *                  *  description: * *           通过DataBase,RecordSet,Record,Field类,实现对mysql数据库的操作 *    包括连接.

mysql命令常用参数实例讲解

mysql命令常用参数实例讲解 以下是mysql命令常用的参数,配合实例进行简单讲解 1,auto-rehash自动补全(表名及表中字段) --------------------------------------- [mysql] #no-auto-rehash auto-rehash --------------------------------------- mysql -u root --auto-rehash ------------------------------------

Mysql事物与二阶段提交

 1.事务的四种特性(ACID) 事务可以是一个非常简单的SQL构成,也可以是一组复杂的SQL语句构成.事务是访问并且更新数据库中数据的一个单元,在事务中的操作,要么都修改,要么都不做修改,这就是事务的目的,也是事务模型区别于其他模型的重要特征之一. 事务的原子性:原子是不可分割的,事务不可分割(没有commit数据不能被读到). 事务的持久性:在commit之后,不能丢数据.(就是在提交后,数据必须落盘redo落盘). 事务的隔离性:在数据库里面,各个事务之间不能互相影响. 事务的一致性:事务

python测试mysql写入性能完整实例

这篇文章主要介绍了python测试mysql写入性能完整实例,具有一定借鉴价值,需要的朋友可以参考下 本文主要研究的是python测试mysql写入性能,分享了一则完整代码,具体介绍如下. 测试环境: (1) 阿里云服务器centos 6.5 (2) 2G内存 (3) 普通硬盘 (4) mysql 5.1.73 数据库存储引擎为 InnoDB (5) python 2.7 (6) 客户端模块 mysql.connector 测试方法: (1) 普通写入 (2) 批量写入 (3) 事务加批量写入

Java JUC之Atomic系列12大类实例讲解和原理分解

Java JUC之Atomic系列12大类实例讲解和原理分解 2013-02-21      0个评论       作者:xieyuooo 收藏    我要投稿 在java6以后我们不但接触到了Lock相关的锁,也接触到了很多更加乐观的原子修改操作,也就是在修改时我们只需要保证它的那个瞬间是安全的即可,经过相应的包装后可以再处理对象的并发修改,以及并发中的ABA问题,本文讲述Atomic系列的类的实现以及使用方法,其中包含: 基本类:AtomicInteger.AtomicLong.Atomic