<bdo id='K3FeL'></bdo><ul id='K3FeL'></ul>
  1. <i id='K3FeL'><tr id='K3FeL'><dt id='K3FeL'><q id='K3FeL'><span id='K3FeL'><b id='K3FeL'><form id='K3FeL'><ins id='K3FeL'></ins><ul id='K3FeL'></ul><sub id='K3FeL'></sub></form><legend id='K3FeL'></legend><bdo id='K3FeL'><pre id='K3FeL'><center id='K3FeL'></center></pre></bdo></b><th id='K3FeL'></th></span></q></dt></tr></i><div id='K3FeL'><tfoot id='K3FeL'></tfoot><dl id='K3FeL'><fieldset id='K3FeL'></fieldset></dl></div>
  2. <small id='K3FeL'></small><noframes id='K3FeL'>

      <legend id='K3FeL'><style id='K3FeL'><dir id='K3FeL'><q id='K3FeL'></q></dir></style></legend>
      <tfoot id='K3FeL'></tfoot>

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

      时间:2023-10-02

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

            <bdo id='Cn4zi'></bdo><ul id='Cn4zi'></ul>
          • <tfoot id='Cn4zi'></tfoot>
              <tbody id='Cn4zi'></tbody>

              • <i id='Cn4zi'><tr id='Cn4zi'><dt id='Cn4zi'><q id='Cn4zi'><span id='Cn4zi'><b id='Cn4zi'><form id='Cn4zi'><ins id='Cn4zi'></ins><ul id='Cn4zi'></ul><sub id='Cn4zi'></sub></form><legend id='Cn4zi'></legend><bdo id='Cn4zi'><pre id='Cn4zi'><center id='Cn4zi'></center></pre></bdo></b><th id='Cn4zi'></th></span></q></dt></tr></i><div id='Cn4zi'><tfoot id='Cn4zi'></tfoot><dl id='Cn4zi'><fieldset id='Cn4zi'></fieldset></dl></div>
                <legend id='Cn4zi'><style id='Cn4zi'><dir id='Cn4zi'><q id='Cn4zi'></q></dir></style></legend>
                本文介绍了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 中的数据库事务:它们是孤立的吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                上一篇:检查Javascript是否启用 下一篇:php setcookie vs Zend_Http_Cookie

                相关文章

                最新文章

                1. <small id='v3isf'></small><noframes id='v3isf'>

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