如何在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
相关产品推荐
相关产品推荐

