Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend框架锁行查询_Php_Mysql_Zend Framework_Innodb - Fatal编程技术网

Php Zend框架锁行查询

Php Zend框架锁行查询,php,mysql,zend-framework,innodb,Php,Mysql,Zend Framework,Innodb,这就是我的疑问: try { $this->_db->beginTransaction(); $this->_db->update($this->_name, $data, $where); $this->_db->commit(); } catch (Exception $e) { $this->_db->rollback(); throw $e

这就是我的疑问:

 try {
        $this->_db->beginTransaction();

        $this->_db->update($this->_name, $data, $where);

        $this->_db->commit();
    } catch (Exception $e) {
        $this->_db->rollback();

        throw $e;
    }
如果有用户使用这个查询,我想锁定表中的这一行,并在查询完成时解锁。但是,现在如果两个用户同时使用这个查询,他们就可以更新这一行了。我的桌子是InnoDB

经验。
如果某些用户使用此查询更新id=10的新闻,而此时其他用户使用此查询更新相同的新闻(id=10)。下次更新时,其中一个用户将无法看到新的新闻信息。

InnoDB表自动使用行级锁定。发件人:

MySQL使用InnoDB表的行级锁定来支持多个会话的同时写访问,使它们适合多用户、高并发和OLTP应用程序


因此,不能同时写入两行。后续查询只是排队,直到它们准备好执行为止。(MyISAM和其他表类型也是如此,但它们使用表级锁定。)不需要修改代码。

如果事务中只有一个更新命令,则不需要使用事务,因为它已经是atomicOk,但是一些用户使用此查询来更新id=10的新闻,而此时其他用户使用此查询来更新相同的新闻(id=10),但其中一个用户将无法看到新的新闻信息。