在Slick 3中进行事务性使用

ps0604

通常,您将在一个事务中运行两个或多个语句。但是,在我可以transactionally在Slick 3中使用的所有示例中,通常for在循环中使用in时,都有一个对这些语句进行分组的理解

这有效(从事务中的两个表中删除):

   val action = db.run((for {
      _ <- table1.filter(_.id1 === id).delete
      _ <- table2.filter(_.id2=== id).delete
    } yield ()).transactionally)
    val result = Await.result(action, Duration.Inf)

但是for/yield需要吗?有没有一种替代方法可以只在一个事务中运行两个或多个语句?

帕维尔·尤尔琴科(Pavel Jurchenko)

您可以transactionally在所有上使用DBIOAction,而不仅仅是对for理解的结果。例如,您可以transactionallyDBIO.seq方法结合使用,该方法采取一系列操作并按顺序运行它们:

val firstAction = table1.filter(_.id === id1).delete
val secondAction = table2.filter(_.id === id2).delete

val combinedAction = DBIO.seq(
  firstAction,
  secondAction
).transactionally

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章