find(1); $sessi-6ren">
gpt4 book ai didi

mysql - DBIx::Class仅更新一行

转载 作者:行者123 更新时间:2023-11-29 05:34:24 25 4
gpt4 key购买 nike

我正在使用DBIx::Class并且只想更新表中的一行。目前我是这样做的:

my $session = my_app->model("DB::Session")->find(1);    
$session->update({done_yn=>'y',end_time=>\'NOW()'});

它可以工作,但问题是当它确实找到要查找的行时,它会执行整个查询:
SELECT me.id, me.project_id, me.user_id, me.start_time, me.end_time, me.notes, me.done_yn FROM sessions me WHERE ( me.id = ? ): '8'

当我只想更新一行时,这看起来有点多。是否有更新一行而不必先从数据库中取出整行的方法?我在找这样的东西:
my_app->model("DB::Session")->update({done_yn=>'y',end_time=>\'NOW()'},{id=>$id});

其中 $id是查询的 WHERE id=?部分。有人知道怎么做吗?谢谢!

最佳答案

您可以对仅与此单行匹配的受限结果集运行更新:
my_app->model("DB::Session")->search_rs({ id=> 1 })->update({done_yn=>'y',end_time=>\'NOW()'});
我建议您使用date time->now对象而不是literal SQL来更新end_time列,因为它使用apps服务器的日期和时间而不是数据库服务器,并且使您的模式更兼容不同的rdbmse。

关于mysql - DBIx::Class仅更新一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11942679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com