You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rust中使用Sea-ORM执行指定UPDATE SQL语句?

在Rust中使用Sea-ORM执行列间运算的UPDATE语句

要实现UPDATE user SET balance = balance - debit这个SQL操作,你需要用Sea-ORM的Expr模块来构建列与列之间的运算表达式,而非直接用Column枚举做减法。

正确代码示例

use sea_orm::{Expr, ColumnTrait};

let updated = user::ActiveModel::update(&db)
    .set_expr(
        user::Column::Balance,
        Expr::col(user::Column::Balance) - Expr::col(user::Column::Debit)
    )
    .exec()
    .await
    .unwrap_or_default();

原代码问题说明

你之前的代码user::Column::Balance - 100无法正常工作,原因是Column枚举本身不支持直接的算术运算。Sea-ORM要求用Expr::col()将列包装成表达式对象,才能进行运算拼接,这样框架才能正确解析并生成对应的SQL语句。

如果需要针对特定用户更新,可添加filter条件:

let updated = user::ActiveModel::update(&db)
    .set_expr(
        user::Column::Balance,
        Expr::col(user::Column::Balance) - Expr::col(user::Column::Debit)
    )
    .filter(user::Column::Id.eq(123)) // 示例:仅更新ID为123的用户
    .exec()
    .await
    .unwrap_or_default();

内容的提问来源于stack exchange,提问作者Lucky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 16:50:54