Anorm 中的原子 MySQL 事务

2024-02-29

我编写了一个简单的命中计数器,它使用 Anorm 更新 MySQL 数据库表。我希望交易是原子的。我认为最好的方法是将所有 SQL 字符串连接在一起并执行一个查询,但这对于 Anorm 似乎是不可能的。相反,我将每个选择、更新和提交放在单独的行上。这可行,但我忍不住想他们一定是更好的方法。

private def incrementHitCounter(urlName:String) {
  DB.withConnection { implicit connection =>
    SQL("start transaction;").executeUpdate()
    SQL("select @hits:=hits from content_url_name where url_name={urlName};").on("urlName" -> urlName).apply()
    SQL("update content_url_name set hits = @hits + 1 where url_name={urlName};").on("urlName" -> urlName).executeUpdate()
    SQL("commit;").executeUpdate()
  }
}

谁能找到更好的方法来做到这一点?


Use withTransaction代替withConnection像这样:

private def incrementHitCounter(urlName:String) {
  DB.withTransaction { implicit connection =>
    SQL("select @hits:=hits from content_url_name where url_name={urlName};").on("urlName" -> urlName).apply()
    SQL("update content_url_name set hits = @hits + 1 where url_name={urlName};").on("urlName" -> urlName).executeUpdate()
  }
}

为什么要在这里使用交易呢?这应该也有效:

private def incrementHitCounter(urlName:String) {
  DB.withConnection { implicit connection =>
    SQL("update content_url_name set hits = (select hits from content_url_name where url_name={urlName}) + 1 where url_name={urlName};").on("urlName" -> urlName).executeUpdate()
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Anorm 中的原子 MySQL 事务 的相关文章

  • 实现一个scala集合,以便map、filter等产生正确的类型

    我正在尝试实施一个默认值映射 https stackoverflow com questions 3187411 designing a convenient default valued map in scala 我想要过滤器 地图等De
  • 运行 JAR 时“JCE 无法验证提供者 BC”

    在我的 scala 项目中我使用 org bouncycastle bcprov jdk14 1 51 用于密码学 如果它在 Scala IDE 中测试我的项目 它工作得很好 但是一旦我制作了一个 JAR 并尝试通过以下方式运行它java
  • 无法在 MySQL 中运行查询语法错误意外

    我正在运行工作台 5 2 47 我写了一个很长的程序 用于基本数据检查 如果数据库中不存在记录 则将插入该记录 该过程保存时没有任何问题 但当我尝试运行它时 MySQL 5 5 抛出错误 它很长 里面有很多公司敏感数据 或者我会把它发布在这
  • 'SQLSTATE[HY093]:参数数量无效:绑定变量的数量与令牌数量不匹配'[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我收到 SQLSTATE HY093 的错误 参数编号无效 绑定变量的数量与标记的数量不匹配 if isset POST cada
  • Scala SBT 和 JNI 库

    我正在编写一个简单的应用程序Scala通过以下方式使用 leveldb 数据库leveldbjni图书馆 我的build sbt文件看起来像这样 name Whatever version 1 0 scalaVersion 2 10 2 l
  • PDOException SQLSTATE[HY000] [2002] 我的本地计算机上的连接超时

    最近我从服务器导入了代码 但本地代码无法连接到远程 mysql 数据库 所以我有两个问题 我可以访问我的远程数据库吗 如果是 为什么我的代码不起作用 如果没有 有没有办法绕过这个问题 我不想复制在本地计算机上运行的 mysql 数据库 我的
  • sql/mysql 过滤器仅包含最大值

    我有一个像这样的结果集 ID name myvalue 1 A1 22 2 A2 22 3 A3 21 4 A4 33 5 A5 33 6 A6 10 7 A7 10 8 A8 10 9 A9 5 我想要的是仅包含包含可用的最高 myval
  • MySQL C++ 连接器未解决的依赖关系(VS 2015)

    我正在尝试在 Windows Visual Studio 2015 上编译 MySQL Connector C 我根据以下内容使用CMake生成了项目文件官方说明 https dev mysql com doc connector cpp
  • 选项包装值是一个好的模式吗?

    我最近写了以下 Scala 代码 val f File pretend this file came from somewhere val foo toFoo io Source fromFile f mkString 我真的不喜欢这种方式
  • Mysql:my.cnf中的修改不生效

    我已经更新了my cnf我的数据库文件包含以下行 max connections 200 之后我停止并启动 mysql 服务以使更改生效 但由于某种原因 此更改不会影响数据库 因为如果我运行 mysql gt select max conn
  • 什么是 Java 8“视图”?

    我正在观看 Paul Philips 的演讲 http www youtube com watch v TS1lpKBMkgg http www youtube com watch v TS1lpKBMkgg 在 12 48 比较 Scal
  • SQL日期格式转换? [dd.mm.yy 至 YYYY-MM-DD]

    是否有 mySQL 函数可以将日期从 dd mm yy 格式转换为 YYYY MM DD 例如 03 09 13 gt 2013 09 03 由于您的输入是表单中的字符串03 09 13 我假设 因为今天是 2013 年 9 月 3 日 d
  • .java 和 .scala 类之间是否可能存在循环依赖?

    假设我在 java 文件中定义了类 A 在 scala 文件中定义了类 B A 类使用 B 类 B 类使用 A 类 如果我使用 java 编译器 则会出现编译错误 因为 B 类尚未编译 如果我使用scala编译器A类将找不到 有没有可以同时
  • 如何在具有动态列的表中插入值 Jdbc/Mysql

    我想在具有动态列的表中添加值 我设法创建一个包含动态列的表 但我不知道如何插入数据 Create Table sql CREATE TABLE MyDB myTable level INTEGER 255 int columnNumber
  • Spark:替换嵌套列中的空值

    我想更换所有n a以下数据框中的值unknown 它可以是scalar or complex nested column 如果它是一个StructField column我可以循环遍历列并替换n a using WithColumn 但我希
  • 寻找多列索引的最佳顺序

    假设我有一个包含两个索引的表 一个位于 a 列 一个位于 a b 和 c 列 我注意到 根据索引定义中列的顺序 MySQL 可能最终使用单列索引而不是多列索引 即使多列索引中的所有三列都在 ON 中引用JOIN 的一部分 这有点引出了一个问
  • 获取MySql中重复行的列表

    我有一张这样的桌子 ID nachname vorname 1 john doe 2 john doe 3 jim doe 4 Michael Knight 我需要一个查询 该查询将从具有相同 nachname 和 vorname 的记录
  • 选择不带 FROM 但有多于一行的选择

    如何在不从现有表中进行选择的情况下生成 2 行 2 列的表 我正在寻找的是一个返回的选择语句 e g id value 1 103 2 556 Use UNION http dev mysql com doc refman 5 0 en u
  • html 下钻下拉所选值未插入 MYSQL

    我有两个下拉列表 首先从数据库下拉填充 根据第一个下拉列表的选定值从数据库填充第二个下拉列表 document ready function c change function var c1 c selected text if c1 aj
  • MySQL REPLACE 在自动递增行中

    假设我有一个 MySQL 表 其中包含三列 id a and b和名为id is an AUTO INCREMENT场地 如果我将如下查询传递给 MySQL 它将正常工作 REPLACE INTO table id a b VALUES 1

随机推荐

  • 跑道验证读取权限

    我想使用服务器端流来获取对用户空间的读取访问权限 这是我的登录网址 https podio com oauth authorize client id YOUR APP ID redirect uri YOUR URL scope spac
  • 从众所周知的链接创建自定义 Android 键盘;编译、安装,但设备上没有显示此键盘的选项

    我按照中的说明进行操作这个链接 http code tutsplus com tutorials create a custom keyboard on android cms 22615使用 Eclipse Luna 2 4 4 2 该应
  • 什么是剖析?

    我对此很陌生 正在努力学习 什么是剖析 用于分析 NET Java EE 的各种免 费工具有哪些 Javascript 可以被分析吗 如果可以 用什么工具 最后 这些分析器如何工作 分析可衡量代码各个部分的运行时间 可以使用 firebug
  • iPhone 上的 JavaFX - 应用阴影时 ListView 滚动缓慢

    我正在使用 JavaFXPorts 在 iOS 上开发一个应用程序 我有一个窗格 其中包含包含国家及其国旗的列表视图 我注意到 当我在窗格上应用投影效果时 ListView 滚动很滞后 正如您从下面的视频中看到的 没有该效果 滚动非常平滑
  • 在正则表达式中,匹配一件事或另一件事,或两者都匹配

    在正则表达式中 我需要知道如何匹配一件事或另一件事 或两者 按顺序 但至少有一件事情需要在那里 例如 下面的正则表达式 0 9 0 9 将匹配 234 and 56 but not 234 56 而下面的正则表达式 0 9 0 9 将匹配上
  • HTML 背景图像加载

    我有一个简单的 HTML 页面 其中包含一些 JavaScript JavaScript 在主体中启动 onLoad 身体还有一个背景图像 JavaScript 在加载背景图像之前启动 有没有办法让主体 onLoad 等待主体背景图片加载
  • Ansible 无法找到 python 模块

    使用ansible在多个虚拟机上运行docker swarm ansible找不到python模块docker在远程计算机上 即使它已安装 运行剧本sudo ansible playbook i inv2 py etc ansible pl
  • D3 拖动事件行为:DragEvent.x 和 DragEvent.y 值源

    我不明白 Mike Bostock 的 D3 示例中 D3 DragEvent 对象的行为 这是我不明白的两个例子 圆圈拖动 I https bl ocks org mbostock 22994cc97fefaeede0d861e6815a
  • CocosDenshion 音乐淡出

    我在游戏中使用 cocos denshion 来播放音乐 我目前正在使用以下代码播放背景音乐 SimpleAudioEngine共享引擎 playBackgroundMusic backSong mp3 然而 当游戏结束时 我需要背景音乐逐
  • 是否可以在iOS模拟器中安装Adobe reader或第三方应用程序进行测试?

    我试图在谷歌中找到答案 没有运气 我正在使用 UIDocumentationController 从我的应用程序中打开 PDF 它在设备中工作正常 我显示了共享 adobe reader 等选项 当我想在 iOS 模拟器中测试它时 我无法选
  • 本地定时器对象事件处理程序

    我在类函数中有以下代码 public function foo void var timer Timer new Timer 10000 1 timer addEventListener TimerEvent TIMER COMPLETE
  • SQL从另一列插入不同值的计数

    我目前正在努力解决以下查询 我在数据库中有一个表 其中包含公司列表及其拥有的许多产品 我正在寻找Count的数量独特的产品他们拥有并将其插入到表中其公司名称所在的行中 我尝试过以下方法 INSERT INTO table name SET
  • 如何在 JavaScript 中有效地将大块细分为许多大小为 2 的幂的小块

    建设关闭这个答案 https stackoverflow com questions 66253424 how to efficiently segment a large block of predefined size into sma
  • Android 编译器上的 Delphi PATH 错误

    我刚刚在我办公室的 DELL 工作站中安装了 Delphi 10 Seattle 并且能够编译 32 位和 64 位 当我选择Android时 出现这样的错误 执行错误 命令 PATH C Program 文件 Java jdk1 7 0
  • 使用 OpenCV 2.2 实施 Sift

    有人知道 SIFT 实现示例与 OpenCV 2 2 的链接吗 问候 下面是一个最小的例子 include
  • 如何知道 Cosmos 中的 Cygnus 通知表名称?

    我正在使用 Cygnus 通过 httpfs 向 Cosmos 发送 Orion Context Broker 通知 Hive 历史记录中发送到 Cosmos 的数据存储在哪里 存储 Cygnus 数据的表的名称是什么 Cygnus 在 C
  • Flask URL Route:将所有其他 URL 路由到某个函数

    我正在使用 Flask 0 9 我有使用 Google App Engine 的经验 在 GAE 中 url 匹配模式按照它们出现的顺序进行评估 先到先得 Flask 中也是同样的情况吗 在 Flask 中 如何编写 url 匹配模式来处理
  • Android 多屏限定符定义

    我想创建一个与大量设备和屏幕兼容的布局 我一直在研究 发现最常见的屏幕分辨率是 249x320 480x800 600x1024 720x1280 以及与这些成比例的其他一些屏幕 好吧 阅读文档后我发现有两种方法可以做到这一点 到 3 2
  • 使用 J2V8 从 .js 执行函数

    我正在使用 J2V8 在 Android 上执行 JavaScript 代码 在我的 Java 代码中 我可以访问和执行单独 js 文件的 JavaScript 函数吗 如果可以的话 我该怎么做 与许多 JavaScript 环境一样 您只
  • Anorm 中的原子 MySQL 事务

    我编写了一个简单的命中计数器 它使用 Anorm 更新 MySQL 数据库表 我希望交易是原子的 我认为最好的方法是将所有 SQL 字符串连接在一起并执行一个查询 但这对于 Anorm 似乎是不可能的 相反 我将每个选择 更新和提交放在单独