MySQL并发更新

2023-11-21

我有一个小型 POS 系统,服务器端使用 PHP 和 MySql (InnoDB)。 当“销售”完成时,执行以下查询来更新库存数量:

"UPDATE products SET qty=qty-:qty, ustatus=1 WHERE pid=:pid";

这个语句是否是“并发更新安全”,这意味着我是否需要任何事务或锁定表。

我只是想确定,像这样的多个查询是同时执行的 不会弄乱我的库存。


  1. 如果你使用innodb,那么所有sql语句在事务中执行,您不需要显式指定。

  2. 并发控制是通过锁而不是事务来完成的。事务可能只决定锁的寿命。

  3. 更新语句放置了一个对要修改的记录进行排他锁定, 意义没有其他语句可以修改(有时甚至无法读取)锁定的记录,直到排他锁被释放。因此,从并发的角度来看,您的声明是安全的。

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

MySQL并发更新 的相关文章

  • 使用 Coldfusion 分页

    是否可以仅使用一个查询在 Coldfusion 中分页并显示页数 我的理解是 您显然可以使用一个查询进行分页 但您需要一个额外的查询来创建页面 这是为了计算结果总数 currentPage 1 resultsPerPage Offset i
  • 在 MySQL 5.6 中重置 ROOT 密码

    我一直在关注这些说明 http dev mysql com doc refman 5 6 en resetting permissions html用于重置root本地安装的密码MySQL 5 6在 Windows 7 笔记本电脑上 我停止
  • 为什么我们要关闭 Mysqli 中的结果

    为什么我们要关闭 result mysqli new mysqli localhost root root test if mysqli gt connect errno echo Failed to connect to MySQL my
  • 如何解决 MySQL Workbench 上的这些行错误?

    正如您所看到的 我的代码中没有语法错误或类似的错误 你们能帮我吗 我想这只是错误标记机制中的一个小错误 尝试编辑代码或关闭此编辑器并打开一个新编辑器 如果您有重现此问题的步骤列表 您甚至可以创建一个错误报告 http bugs mysql
  • 提高mysql导入速度[关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我有一个很大的数据库22GB 我曾经用过进行备份mysqldumpgzip 格式的命令 当我提取 gz 文件时 它会生成 sql文件的
  • 在数据库中存储差异的最紧凑方式是什么?

    我想实现类似于维基媒体的修订历史的东西 最好使用的 PHP 函数 库 扩展 算法是什么 我希望差异尽可能紧凑 但我很高兴只能显示每个修订版与其同级修订版之间的差异 并且一次只能回滚一个修订版 在某些情况下 只有几个字符可能会发生变化 而在其
  • MySQL 性能 DELETE 或 UPDATE?

    我有一个超过 10 7 行的 MyISAM 表 向其中添加数据时 我必须在最后更新 10 行 删除它们然后插入新行更快 还是更新这些行更快 应更新的数据不是索引的一部分 索引 数据碎片怎么样 UPDATE到目前为止要快得多 当你UPDATE
  • MySQL 中有“connect by”替代方案吗?

    如果我使用 Oracle 有connect by可用于创建分层查询的关键字 目前我正在一个项目中使用MySQL 我想知道是否有替代方案connect by在 MySQL 中 我尝试过谷歌 但到目前为止还没有结果 我想要实现的是通过一个查询从
  • 找时间通过 PHP 执行 MySQL 查询

    我在互联网上看到过这个问题 here http www phpbuilder com board showthread php t 2100256 and here http answers yahoo com question index
  • 使用 PHP 将文件上传到 MySql DB

    我希望用户通过我在后端使用 MySql 用 PHP 开发的 web 应用程序上传文件 我想将文件存储在数据库中 我在这样做时遇到了问题 此外 一旦文件存储在数据库中 我们如何下载它 并在 web 应用程序中正确显示它 文件类型和文件的其他属
  • 哈希密码字段使用什么数据类型以及长度?

    我不确定密码哈希是如何工作的 稍后将实现 但现在需要创建数据库模式 我正在考虑将密码限制为 4 20 个字符 但据我了解 加密后哈希字符串的长度将有所不同 那么 如何将这些密码存储在数据库中呢 更新 仅使用哈希函数不足以存储密码 你应该阅读
  • pyodbc 无法正确处理 unicode 数据

    我确实使用 pyodbc 成功连接了 MySQL 数据库 并且它可以很好地处理 ascii 编码的数据 但是当我打印使用 unicode utf8 编码的数据时 它引发了错误 UnicodeEncodeError ascii codec c
  • Wordnet sqlite 同义词和示例

    我正在尝试获取给定 wordid 的同义词和示例列表 经过大量的试验和错误 我可以获得所有同义词集的样本 但不是实际的同义词 这是我的查询 它给出了以下结果 select senses wordid senses synsetid sens
  • 日常 MySQL(部分和过滤)复制的最佳实践?

    我有一个相当大的数据库 有超过 40 个表 我只需要复制几个表 5 并且每个表也被过滤 我正在寻找一些复制这些数据的最佳实践 每天就足够了 我可以只选择几个表并为每个表包含一些 WHERE 子句 我正在考虑为每个表启动 mysqldump
  • Symfony/Doctrine 重新排列数据库列

    当我使用doctrine schema update命令行生成表时 Doctrine 或Symfony 似乎想要添加一个命令来重新排列我的列 将键放在它出现的前面 我想知道是否 更希望在哪里 我可以禁用环境的这个 功能 所以当我去生成我的表
  • 重用 PDO 语句 var 会使进程崩溃

    我重用一个变量来存储两个不同的 PDO mysql 语句 stmt dbh gt prepare SELECT stmt gt execute stmt dbh gt prepare UPDATE crash here Error in o
  • 如何将变量设置为触发器 MYSQL 内存储过程的结果?

    我这里有一个小问题 我正在为我的数据库工作创建一个触发器 但我不知道如何在触发器内使用存储过程 我想将过程的结果保存在变量中 然后使用稍后在 IF 比较器上变量 这是我的代码 DELIMITER CREATE TRIGGER insert
  • 关于 Cassandra 与 MySQL 的一些建议

    几天前我在这里问了一个问题 得到了一些非常好的答案 我正在考虑做一个带有个人资料 个人简介等的facebook风格的网站 并询问我是否应该使用mysql 答案是使用Cassandra 因为好多了 我只是问这是每个人都会建议的 只是我对mys
  • 如何绑定值 INSERT INTO mysql perl

    我有下面的代码可以工作 但我需要知道如何绑定它们以确保安全 如果我只是将 new row 替换为 并将其放入执行中我收到错误 感谢您的帮助 foreach my field account field order new row param
  • 当php脚本通过ajax运行时显示进度条

    我有一个通过 ajax 向服务器提交值的表单

随机推荐

  • C# System.Windows.Forms.TreeView:双击时停止自动展开/折叠(并执行另一个处理程序)

    有没有simple双击 TreeView 节点时禁用自动展开 折叠的方法 如果当前系统时间与双击的预期时间相匹配 则在不检查 BeforeExpand BeforeCollapse 的情况下 我无法找到此问题的答案 覆盖 OnNodeMou
  • tf.data 内存泄漏

    我正在创建一个tf data Dataset在 for 循环中 我注意到每次迭代后内存并没有像人们预期的那样被释放 有没有办法向 TensorFlow 请求释放内存 我尝试使用tf reset default graph 我尝试打电话del
  • 如何使用 iTextSharp 对齐文本?

    有如下代码 var workStream new MemoryStream var doc new Document PageSize LETTER 10 10 42 35 PdfWriter GetInstance doc workStr
  • Powershell 最后使用 Ctrl-C 跳过块

    我正在 Powershell 中编写一个监控脚本 使用 Try Finally 来在脚本结束时记录一条消息 该脚本旨在无限期地运行 因此我想要一种方法来跟踪意外退出 所有其他 StackOverflow 帖子和帮助页面我检查过状态 即使您使
  • 如何将环境变量传递给 Ubuntu 上的 Netbeans Makefile?

    我在 Linux Ubuntu 9 04 上使用 Netbeans 构建一个 C 项目 如何传递环境变量以便它对 Makefile 可见 如果我做一个正常的export MYVAR xyz 然后运行make从命令行这当然可以正常工作 但Ne
  • Android MVP:一个 Activity 具有多个 Fragment

    我有一个活动 它托管多个片段 这些片段定义用户注册流程中的每个步骤 该流程很复杂 下一步是由前面步骤中的用户操作定义的 流程如下 MainActivity Fragment1 gt Fragment2 gt Fragment3 gt Fra
  • 如何使用 SVML 指令 [重复]

    这个问题在这里已经有答案了 我正在尝试计算exponential使用 SIMD 的函数 我发现了这个功能 我已经包含了 immintrin h 在我的代码中 我的CPU也有一个SSE旗帜 但gcc正在抱怨error mm exp pd wa
  • dropzone js 将删除网址与删除按钮链接起来

    在 Dropzone Js 中 我正在创建删除按钮 然后将其附加到缩略图中 如何链接直接从服务器获取的 url 以使用删除按钮addRemoveLinks true Write function if you need to add som
  • PrettyPhoto 的 rel 属性验证错误

    看起来 W3C 的验证器在 HTML5 页面的 PrettyPhoto rel 属性上返回验证错误 我该如何解决这个错误 元素 a 上的属性 rel 值有错误 PrettyPhoto gallery1 未注册关键字 PrettyPhoto
  • Android AlertDialog 框 WindowManager$BadTokenException 问题

    我将以下代码用于上下文菜单 然后如果用户选择删除 则会出现对话框消息 infos setOnCreateContextMenuListener new OnCreateContextMenuListener Override public
  • Greasemonkey 可以使用 file:// 协议吗?

    我有一个简单的 Greasemonkey 脚本 UserScript name hello namespace http www webmonkey com description A test of accessing documents
  • Smalltalk 中的运算符可以过载吗?

    Smalltalk 中是否可以重载运算符 我正在寻找教程 示例 Thanks Smalltalk 中不可能进行方法重载 相反 方法重写和称为的技术的组合双重调度用于实现与其他语言中的运算符重载相同的行为 您可以在数学运算符中找到示例实现 这
  • Android Studio:该文件不是项目的一部分,但项目构建成功

    我在android studio中突然出现了一个奇怪的问题 我创建了一个新的 cpp 文件 并将其包含在 Android mk 中 然后我同步了该项目 然而 android studio 仍然抱怨该文件不是项目的一部分 我需要同步 但整个项
  • 找不到模块FindOpenCV.cmake(配置过程中出错)

    我写了一个CMakeLists txt对于一个项目C 它使用OpenCV图书馆 当我尝试使用 cmake 创建项目时 出现下一个配置问题 CMake Error at CMakeLists txt 15 find package Could
  • 如何告诉 Symfony 3 忽略某些注释?

    我正在使用 Symfony 3 开发 API 我想使用apidoc创建文档 APIDoc 使用注释 api get user id Request User information apiName GetUser apiGroup User
  • 如何提取没有索引的数组的键和值[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我想从数组 带有键和值的原始数组 中提取数据 提取数组后 我需要两个新数组 第一个数组仅
  • 将 backstack 与 ViewPager 结合使用

    我正在使用 ViewPager 在我的 Android 应用程序中实现滑动 但是 我希望当用户使用后退按钮而不是结束活动时显示前一个片段 有什么办法可以做到这一点吗 谢谢 塞巴斯蒂安 我有类似的问题 这就是我解决的方法 我有一个包含 6 个
  • 如何使用 python lambda 捕获异常

    假设 Python 版本 gt 3 并调用函数列表 我想编写一个处理异常的 lambda 函数 事实是 它不起作用 当函数中抛出异常时 程序返回并且调用堆栈看不到executeFunction in it 怎么办呢 def executeF
  • 检查文本文件中是否存在字符串

    所以我有 def CheckUserExists user with open C database txt r as file if re search user file read return True else return Fal
  • MySQL并发更新

    我有一个小型 POS 系统 服务器端使用 PHP 和 MySql InnoDB 当 销售 完成时 执行以下查询来更新库存数量 UPDATE products SET qty qty qty ustatus 1 WHERE pid pid 这