gorm.Expr
是 GORM ORM 框架的官方函数。它用于创建原始 SQL 表达式,当你需要执行一些简单的数据库计算或者使用数据库函数时特别有用。
在你的代码中:
"callback_num": gorm.Expr("callback_num + ?", 1),
这行代码会被转换为类似这样的 SQL:
callback_num = callback_num + 1
如果不使用 gorm.Expr
,直接写:
"callback_num": order.CallbackNum + 1
这样会直接设置一个固定值,而不是在数据库层面进行增量操作。使用 gorm.Expr
的好处是:
- 避免并发问题:直接在数据库层面进行计算,避免了读取-修改-写入的竞态条件
- 性能更好:不需要先查询当前值再更新
- 原子操作:确保计数器增加操作的原子性
这是 GORM 的官方功能,你可以在 GORM 官方文档 中找到相关说明。