如何使用“重复密钥更新”在 Perl/Catalyst/DBI 中?

发布于 2024-12-11 19:05:51 字数 367 浏览 0 评论 0原文

也许它对于我在 Catalyst 中的学徒级别来说太高级了,但我需要从原始系统移植一些功能,并且它是使用带有“ON DUPLICATE KEY UPDATE”的自定义查询来完成的。

可以使用模型/架构/结果来完成吗?我需要编写自己的完整查询吗?如何?

原因如下,以防万一:

  • 目标表是带有键/值的多语言和多版本首选项表
  • 我有 3 个列索引:theKey、theLang 和 theVersion。
  • 因此,当我保存 theValue 时,它​​会使用这些索引更新现有行,或者创建一个新行,如果需要。

Maybe its too advanced for my apprentice level in Catalyst, but I need to port some functionality from the original system, and it is done using custom queries with the "ON DUPLICATE KEY UPDATE".

Can it be done using the Model/Schema/Result? Do I need to write my own FULL query?, how?

Here is the reason, just in case:

  • The target table is a multilanguage and multiversion Preferences table with key/value pairs.
  • I have 3 column indexes: theKey, theLang and theVersion.
  • So, when I save theValue, it updates an existing row using those indexes, or create a new one if needed.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

勿忘心安 2024-12-18 19:05:51

我假设您使用 DBIx::Class 作为数据抽象类?然后您可以使用以下语句:

$resultset->update_or_create({ col => $val, ... });

I am assuming that you are using DBIx::Class as your Data Abstraction class? You can then use the following statement:

$resultset->update_or_create({ col => $val, ... });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文