【问题标题】:How to use $transaction API in this scenario?在这种情况下如何使用 $transaction API?
【发布时间】:2021-06-26 01:10:24
【问题描述】:
const a = prisma.user.create()
throw new Error() // some error happened
const b = prisma.user.create()
prisma.$transaction([a, b])

由于发生错误,从未调用过prisma.$transaction,因此将a 插入到数据库中。

【问题讨论】:

    标签: prisma prisma2 prisma-transaction


    【解决方案1】:

    a 永远不会被插入到数据库中,因为 prisma.user.create() 命令只会在 prisma.$transaction 内部调用,因此您无需检查。

    【讨论】:

    • 但实际上,a 剂量插入到数据库中。
    • 这是不可能的,Prisma 的 API 默认是惰性的,所以在事务之前不会发生插入。如果可能的话,我也可以给你发一个例子。
    • 如果我只使用create()而不使用await并打开p​​risma的debug选项,控制台显示BEGIN; INSERT...; COMMIT;,所以它只是自动提交我的插入,有没有选项可以停止自动提交我不知道? @瑞安
    • 也许稍后我可以创建一个小型 repo,我会保持联系。非常认为。 @瑞安
    • 是的,请在this link 这样做,以便我可以复制:)
    【解决方案2】:

    怎么样

    const [a, b] = await prisma.$transaction([prisma.user.create(), prisma.user.create()])
    

    【讨论】:

      猜你喜欢
      • 2017-09-01
      • 1970-01-01
      • 2022-01-23
      • 2015-11-30
      • 2017-05-16
      • 2012-10-06
      • 2011-05-18
      • 2019-11-29
      • 2022-01-23
      相关资源
      最近更新 更多