Zend Framework 中的数据库事务:它们是隔离的吗?

2023-11-27

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

我正在考虑使用事务来完成这些步骤。如果我使用下面的方法,能满足我的要求吗?

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

假设您正在使用InnoDB引擎对于您将在其上发出交易的表:

如果要求是您首先需要读取该行并独占锁定它,那么在更新它之前,您应该发出SELECT ... FOR UPDATE询问。就像是:

$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();
}

或者简单地发出“原始”SELECT ... FOR UPDATE and UPDATESQL 语句$db当然。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Zend Framework 中的数据库事务:它们是隔离的吗? 的相关文章

  • 使用 PHP 将对象插入 Google Cloud Storage

    说实话 我对缺少使用 PHP 的 Google Cloud Storage 文档感到非常沮丧 我在这里 Stackoverflow 找到的大部分内容都已经过时了 这是我的尝试 postbody array data gt file get
  • 交叉表的动态 MySQL 查询/视图

    我目前有一个带有以下 sql 的硬编码视图 select username case user role role id when 1 then true else false end as ROLE SUPER case user rol
  • Laravel 5.2 中使用多个 MySQL 数据库连接查询关系存在

    我正在处理以下情况 我有两个模型 一个Employee with id and name字段和一个Telephone with id employee id and flag字段 还有一个一对多关系在这两种模型之间 即一个员工可能拥有多部电
  • 我们如何从 getschemaTable 获取列大小和数据类型?

    我是一个新手 我试图从数据库中的某个表中检索列名称 大小 最大长度 和数据类型 当我执行以下代码时 希望它显示所有列类型和名称 我没有找到如何引用 Size 我使用了 ColumnSize 但据说 DataColumn 不包含此方法的定义
  • 如何从 PHP 访问表单的“名称”变量

    我正在尝试创建一个 BMI 计算器 这应该允许人们使用公制或英制测量单位 我意识到我可以使用隐藏标签来解决我的问题 但这之前曾困扰过我 所以我想我会问 我可以使用 POST variableName 查找提交的变量名字段值 但是 我不知道或
  • 如何在 PHP 中执行 shell 脚本?

    我有一个脚本 var www myscript sh它创建文件夹并运行命令svn update对于我的项目 我需要通过在浏览器中的 PHP 文件中调用它来执行此脚本 即本地主机 test php 我尝试使用函数shell exec and
  • Firebase 查询 - 查找包含字符串的子项

    我在使用 Firebase 查询时遇到了一些问题 我想查询对象 其中对象子值包含特定字符串 到目前为止 我有一些看起来像这样的东西 Firebase ref Firebase alloc initWithUrl https dinosaur
  • 查找所有具有相同值的数组键

    当值未知时 是否有一种更简单的方法来获取具有相同值的所有数组键 The problem with array unique是它返回唯一的数组 因此它找不到唯一的值 例如 从这个数组 Array a gt 1000 b gt 1 c gt 1
  • 更改 MySQL Workbench 上的默认字符集

    我正在尝试使用连接到我的 MYSQL 数据库utf8mb4字符集 请注意 数据库字符集的全局设置已经是 utf8mb4 我可以使用 CLI 轻松完成此操作 如下所示 mysql h myhostname u myuser p default
  • 终端从包含空格的变量传递参数

    在终端中如何将包含空格的字符串作为参数传递 它实际上跳过了空格后面的部分 只取第一个单词 word soccer ball shell exec casperjs test js word word 那么我怎样才能转义空白它只运行这个命令
  • 使用 laravel 5 和 Auth 更新登录的用户帐户设置

    截至今天 我对 Laravel 实际上是任何 PHP 框架 还是个新手 但对 PHP 并不陌生 我创建了我的第一个项目并设法使用预构建的登录Auth系统 我创建了一个新的路线 控制器和模型 名为AccountSettings所以当我去 ac
  • 有没有办法通过给出整数值 PHP 来获取月份名称

    您好 我正在使用 PHP 我想传递一个整数值 1 12 并获取相应的月份名称 PHP 中有没有办法做到这一点 或者我必须通过初始化月份名称数组来完成自己的操作 我想做 month name get month name 1 echo mon
  • MySQL 连接最新行

    我有两张桌子agents and calls 座席将始终处于一个活动呼叫中 可能有另一个待处理的呼叫分配给某个座席 而该座席尚未应答 我想编写一个查询来测试最新的调用是否按排序dateCreated与代理表中当前活动的呼叫匹配 以下是当前呼
  • Razorpay 支付集成 -> 我如何检测关闭按钮 X 附近的 razorpay 模型

    我在 CI 框架中使用 Razorpay 当用户在没有付款的情况下关闭时 创建 razor 支付模型 然后对于取消订单 我希望通过状态更改为已取消来触发查询 那么我怎样才能检测到这一点 我已经在使用 by click jQuery 点击关闭
  • 如何知道 Solr Optimize 何时完成?

    我正在使用 Solr php client 通过 php 与 Solr 进行通信 这段代码触发solr优化命令 solr gt optimize 请问有没有什么方法可以确定优化完成了 这都是因为我的网站上有一个管理页面 我每天必须手动优化
  • 如何在 Yii 框架中从数据库中获取所有表名和列名

    我正在开发一个模块 我想在其中执行动态相关下拉表和列名称功能 前任 获取所有表名称并将其显示在下拉字段中 选择特定表后 我想在下拉字段中再次显示其所有列名称 问题是 1 如何从数据库中获取所有表名 2 如何从表中获取所有列名 我尝试了一些文
  • 如何通过引用文档查询嵌入文档?

    我正在使用 Doctrine ODM 但在通过引用文档查询嵌入文档时遇到问题 考虑以下文件
  • 字符串不等于其自身

    But why if i echo good else echo bad echos gt gt bad 您应该复制此片段 如果你手写的话 它会起作用 它让我疯狂 你太狡猾了 第二个 I 不是小写拉丁文小写 i 我把它转储了 hexdump
  • Join 表(关联表)有主键吗?多对多关系

    Join 表 关联表 有主键吗 多对多的关系 我见过一些带有主键的连接表 一些没有 有人可以解释一下连接表中何时会有主键吗 为什么 先感谢您 在纯 联接 或联结表中 所有字段都将成为主键的一部分 例如 让我们考虑下表 CREATE TABL
  • 选择具有按两列分组的最大值的行

    我见过很多关于此类问题的解决方案 尤其是这个SQL 仅选择列上具有最大值的行 https stackoverflow com questions 7745609 sql select only rows with max value on

随机推荐

  • Java 替换文本文件中的行

    我从另一个问题中找到了这段代码 private void updateLine String toUpdate String updated throws IOException BufferedReader file new Buffer
  • 基于Mysql json的趋势标签实现

    我正在尝试使用 mysql json 功能来识别时间序列上的趋势标签 基于最大点击量 下面是我的桌子 CREATE TABLE TAG COUNTER account varchar 36 NOT NULL time id INT NOT
  • 9 块图像作为背景的问题

    我有一个列表视图结构 具有使用的相对布局 奇数 偶数元素交替背景图像 我正在尝试设置 通过计算位置动态绘制背景 它 与普通位图一起工作得很好 但是当我尝试使用 ninepatch 图像它破坏了用户界面 所有元素都扭曲了 什么 我做错了吗 这
  • 帮助了解像素化算法背后的理论吗?

    假设我有一张想要 像素化 的图像 我想要这个由 100 x 100 方格网格表示的清晰图像 因此 如果原始照片为 500 px X 500 px 则每个正方形为 5 px X 5 px 因此 每个正方形都有一个与它交换的 5 px X 5
  • Angular ReactiveForms:生成复选框值数组?

    给定绑定到相同复选框的列表formControlName 如何生成绑定到的复选框值数组formControl 而不是简单地true false Example
  • TinyMCE 处于只读模式时启用按钮

    我有一个 TinyMCE 4 x 实例 其中文本应处于只读模式 但我仍然有一些想要启用的按钮 例如 一个按钮可以提供我选择的文本部分的字符计数 但是当我打开 TinyMCE 的只读模式时 所有按钮都被禁用 我可以只启用我的按钮 同时仍保留只
  • (半)自动生成函数的 argparsers

    tldnr 给定一个函数 有没有办法根据其签名自动创建 ArgumentParser 我有很多想要向命令行公开的函数 基本上 一个模块 def copy foo bar baz def move from to def unlink par
  • 我应该将日期时间作为长整型(刻度)存储在数据库中吗?

    通过将 DateTime 值保存为long反而 使用 null DateTime 值时似乎总是会出现问题 无论是存储还是检索 null DateTimes 无效 DateTimes 等总是令人痛苦 是否建议简单地与long数据类型 因为您始
  • Jax 向量化:vmap 和/或 numpy.vectorize?

    之间有什么区别jax numpy vectorizeand jax vmap 这是一个小片段集 import jax import jax numpy as jnp def f x return jnp exp x jnp sin x gf
  • 如何转换 CSS 显示 + 不透明度属性

    我的 CSS3 动画有问题 child opacity 0 display none webkit transition opacity 0 5s ease in out moz transition opacity 0 5s ease i
  • 如何绕过警告“右值用作左值”?

    我在用着本教程 但是当我从中编译代码时 D3DXMatrixLookAtLH matView D3DXVECTOR3 0 0f 10 0f 0 0f warning C4238 D3DXVECTOR3 0 0f 0 0f 0 0f warn
  • 如何将WPF页面添加到tabcontrol?

    I have this main wpf window 和这个 WPF 页面 我需要将此页面添加到主窗口中的选项卡控件 这是我的 OnRender 方法 protected override void OnRender DrawingCon
  • Laravel Eloquent 与 DB Facade:何时使用哪个? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我在之间做了一些性能测试Laravel DB 门面查询生成器 and Laravel 的 Eloquent ORM 对于许多 SQL 语句 SELECT UPDATE DELET
  • 如何减小产品包大小?

    我有一个简单的应用程序 初始化为angular cli 它显示了与 3 个路由相关的一些页面 我有 3 个组件 在此页面之一上我使用lodash和 Angular 2 HTTP 模块来获取一些数据 使用 RxJSObservables ma
  • 对当前使用的成员进行联盟测试

    工会是否有控制结构来测试当前正在使用哪个成员 或者是否有 我问这个问题是因为程序中存在未定义的行为从来都不是一件好事 不 现成的机制不存在 你必须自己处理这个问题 通常的方法是包装union in a struct struct MyUni
  • 如何在反应中使超链接外部?

    我是新来反应并在组件中有此链接 a href https example com faq html FAQ a 我要服务器faq html外界反应 问题是 React 将链接视为内部链接并给出 404 我见过一个相似的建议使用的问题
  • iframe 内的图像样式

    我通过设置 iframe 的 src 属性在 iframe 中有一个图像 iframe 具有固定的高度和宽度 我希望该图像的宽度填充 iframe 但其高度将与宽度保持成比例 以便用户能够向下滚动 iframe 以查看图像的其余部分 我该怎
  • matplotlib 轴上的不同精度

    我的老师说 在图表中我必须将轴标记为0 0 25 0 5 not 0 00 0 25 0 50 我知道如何标记它0 00 0 25 0 50 plt yticks np arange 1 5 1 5 25 但是 我不知道如何以不同的精度绘制
  • Delphi 中检测磁盘活动

    我正在使用Delphi 2007 我正在将文件复制到远程驱动器 复印结束后 我关闭 待机机器 可能会发生某些文件没有从缓冲区复制到磁盘的情况 并且远程磁盘断开连接 因此备份未完成 我需要检测该磁盘上的磁盘活动 以便能够正确地在计算机上执行关
  • Zend Framework 中的数据库事务:它们是隔离的吗?

    使用 Zend Framework 我需要 1 从 MySQL 数据库读取一条记录 以及 2 立即写回该记录以表明它已被读取 我不希望其他进程或查询能够在步骤 1 和 2 之间读取或写入同一记录 我正在考虑使用事务来完成这些步骤 如果我使用