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),但其中一个用户将无法看到新的新闻信息。