<small id='LceRG'></small><noframes id='LceRG'>

    <i id='LceRG'><tr id='LceRG'><dt id='LceRG'><q id='LceRG'><span id='LceRG'><b id='LceRG'><form id='LceRG'><ins id='LceRG'></ins><ul id='LceRG'></ul><sub id='LceRG'></sub></form><legend id='LceRG'></legend><bdo id='LceRG'><pre id='LceRG'><center id='LceRG'></center></pre></bdo></b><th id='LceRG'></th></span></q></dt></tr></i><div id='LceRG'><tfoot id='LceRG'></tfoot><dl id='LceRG'><fieldset id='LceRG'></fieldset></dl></div>

          <bdo id='LceRG'></bdo><ul id='LceRG'></ul>
      1. <tfoot id='LceRG'></tfoot>
        <legend id='LceRG'><style id='LceRG'><dir id='LceRG'><q id='LceRG'></q></dir></style></legend>

        Zend Framework 中的数据库事务:它们是孤立的吗?

        Database transactions in Zend Framework: Are they isolated?(Zend Framework 中的数据库事务:它们是孤立的吗?)
        <legend id='KZyb9'><style id='KZyb9'><dir id='KZyb9'><q id='KZyb9'></q></dir></style></legend>

        • <i id='KZyb9'><tr id='KZyb9'><dt id='KZyb9'><q id='KZyb9'><span id='KZyb9'><b id='KZyb9'><form id='KZyb9'><ins id='KZyb9'></ins><ul id='KZyb9'></ul><sub id='KZyb9'></sub></form><legend id='KZyb9'></legend><bdo id='KZyb9'><pre id='KZyb9'><center id='KZyb9'></center></pre></bdo></b><th id='KZyb9'></th></span></q></dt></tr></i><div id='KZyb9'><tfoot id='KZyb9'></tfoot><dl id='KZyb9'><fieldset id='KZyb9'></fieldset></dl></div>

          <small id='KZyb9'></small><noframes id='KZyb9'>

            • <bdo id='KZyb9'></bdo><ul id='KZyb9'></ul>
              <tfoot id='KZyb9'></tfoot>

                  <tbody id='KZyb9'></tbody>

                  本文介绍了Zend Framework 中的数据库事务:它们是孤立的吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  使用 Zend Framework,我需要 (1) 从 MySQL 数据库读取一条记录,以及 (2) 立即写回该记录以表明它已被读取.我不希望其他进程或查询能够在步骤 (1) 和 (2) 之间读取或写入同一条记录.

                  Using Zend Framework, I need to (1) read a record from a MySQL database, and (2) immediately write back to that record to indicate that it has been read. I don't want other processes or queries to be able to read from or write to the same record in between steps (1) and (2).

                  我正在考虑对这些步骤使用事务.如果我使用以下方法,是否满足我的要求?

                  I was considering using a transaction for these steps. If I use the following methods, will that fulfil my requirements?

                  Zend_Db_Adapter_Abstract::beginTransaction()
                  Zend_Db_Adapter_Abstract::commit()
                  Zend_Db_Adapter_Abstract::rollBack()
                  

                  推荐答案

                  假设您正在使用 InnoDB 引擎,用于您将在其上发出事务的表:

                  Presupposing you are using the InnoDB engine for tables that you will issue transactions on:

                  如果要求你首先需要读取该行并独占锁定它,那么在你打算更新它之前,你应该发出一个 SELECT ... FOR UPDATE 查询.类似的东西:

                  If the requirement is that you first need to read the row and exclusively lock it, before you are going to update it, you should issue a SELECT ... FOR UPDATE query. Something like:

                  $db->beginTransaction();
                  try
                  {
                      $select = $db->select()
                                   ->forUpdate() // <-- here's the magic
                                   ->from(
                                       array( 'a' => 'yourTable' ),
                                       array( 'your', 'column', 'names' )
                                   )
                                   ->where( 'someColumn = ?', $whatever );
                  
                      $result = $this->_adapter->fetchRow( $select );
                  
                      /*
                        alter data in $result
                        and update if necessary:
                      */
                      $db->update( 'yourTable', $result, array( 'someColumn = ?' => $whatever ) );
                  
                      $db->commit();
                  }
                  catch( Exception $e )
                  {
                      $db->rollBack();
                  }
                  

                  或者只是在 $db 上发出原始"SELECT ... FOR UPDATEUPDATE SQL 语句.

                  Or simply issue 'raw' SELECT ... FOR UPDATE and UPDATE SQL statements on $db of course.

                  这篇关于Zend Framework 中的数据库事务:它们是孤立的吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Zend_Controller_Router_Exception: quot;xyzquot; is not specified(Zend_Controller_Router_Exception:“xyz;未指定)
                  Zend_Db_Table subquery(Zend_Db_Table 子查询)
                  pcntl_fork and the MySQL connection is gone(pcntl_fork 和 MySQL 连接消失了)
                  Change layout in the controller of Zend Framework 2.0(在 Zend Framework 2.0 的控制器中更改布局)
                  Zend Mail Gmail SMTP(Zend 邮件 Gmail SMTP)
                  Zend_Form: how to check 2 fields are identical(Zend_Form:如何检查 2 个字段是否相同)
                1. <legend id='NuzzL'><style id='NuzzL'><dir id='NuzzL'><q id='NuzzL'></q></dir></style></legend>

                        <small id='NuzzL'></small><noframes id='NuzzL'>

                        <tfoot id='NuzzL'></tfoot>

                          <tbody id='NuzzL'></tbody>
                          <bdo id='NuzzL'></bdo><ul id='NuzzL'></ul>
                        • <i id='NuzzL'><tr id='NuzzL'><dt id='NuzzL'><q id='NuzzL'><span id='NuzzL'><b id='NuzzL'><form id='NuzzL'><ins id='NuzzL'></ins><ul id='NuzzL'></ul><sub id='NuzzL'></sub></form><legend id='NuzzL'></legend><bdo id='NuzzL'><pre id='NuzzL'><center id='NuzzL'></center></pre></bdo></b><th id='NuzzL'></th></span></q></dt></tr></i><div id='NuzzL'><tfoot id='NuzzL'></tfoot><dl id='NuzzL'><fieldset id='NuzzL'></fieldset></dl></div>