Zend Framework锁定行查询

时间:2015-01-01 22:15:24

标签: 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;
    }

我想如果某个用户使用此查询,则表中的该行将被锁定,并且当查询完成时将被解锁。但是,现在如果两个用户同时使用此查询,则可以更新此行。我的桌子是InnoDB。

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

1 个答案:

答案 0 :(得分:0)

InnoDB表自动使用行级锁定。来自MySQL 5.6 Reference Manual: 8.10.1 Internal Locking Methods

  

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

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