【问题标题】:INNODB and mysql PDO driver lock in share modeINNODB 和 mysql PDO 驱动程序锁定在共享模式
【发布时间】:2013-02-06 10:06:16
【问题描述】:

使用 INNODB,您可以将 LOCK IN SHARE MODE; 添加到查询中,以便其他用户仍然可以阅读,但在编辑完成之前不能更新。

我目前在 PHP 中的 PDO 函数如下所示:

//$this->db is a PDO connection to the MYSQL innodb database.
try 
    {
    $this->db->beginTransaction();
    $tmp = $this->db->prepare($query);  

    $tmp->execute($arr);
    $this->last_id = $this->db->lastInsertId();
    $this->db->commit();
    return $this->last_id;
    }
catch(PDOException $ex)
    {
    $this->db->rollBack();
    return $ex->getMessage();
    }

是否有 PDO 驱动程序功能设置可以将其设置为共享模式?如果是这样怎么办?我发现唯一的事情没有答案,文档也不是很清楚。 还是应该简单地将其添加到查询字符串中?

【问题讨论】:

    标签: php mysql pdo innodb


    【解决方案1】:

    您必须创建查询以匹配 MySQL 语法,仅此而已,例如:

    SELECT * FROM parent WHERE NAME = 'Jones' LOCK IN SHARE MODE
    

    只需将 LOCK IN SHARE MODE 附加到查询字符串即可。

    【讨论】:

    • 那么,这不会妨碍PDO连接的事务功能吗?并且在提交后会释放锁吗?还是我需要通过查询释放它?
    • 是的,事务功能会起作用,事务结束后锁会被释放。
    • 谢谢!你帮了大忙!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 2016-12-14
    • 2010-09-27
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多