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

如何在Prisma中使用数据库原生NOW()函数执行表更新操作?

如何在不使用API服务器时间的前提下调用数据库原生函数

你给出的设置finishedAt字段的代码已经是正确实现,Prisma中调用数据库原生函数的标准方案就是使用prisma.raw()方法,该方法会将你传入的SQL表达式直接提交给数据库执行,不会在API服务层做任何处理,完全可以满足你使用数据库侧时间的需求。

不同数据库的时间函数参考

  • MySQL 可用:NOW()、CURRENT_TIMESTAMP、UTC_TIMESTAMP()
  • PostgreSQL 可用:NOW()、CURRENT_TIMESTAMP、transaction_timestamp()
  • SQLite 可用:DATETIME('now')

注意事项

  • prisma.raw()传入的SQL片段默认不会做防注入处理,禁止将用户可控的输入直接拼接进prisma.raw()的参数,如果需要传入动态参数请使用参数化传参写法,示例如下:
// 带动态参数的raw写法,可避免SQL注入风险
ctx.prisma.raw('UPDATE table SET count = count + ? WHERE id = ?', [addNum, targetId])
  • 除了时间函数外,所有数据库支持的原生运算、自定义函数都可以通过prisma.raw()调用,比如库存扣减场景的示例:
await ctx.prisma.goods.update({
  data: {
    // 直接在数据库侧执行库存扣减运算,避免并发场景下的脏写问题
    stock: ctx.prisma.raw('stock - 1')
  },
  where: { id: goodsId }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:48:00