通常,您将在一个事务中运行两个或多个语句。但是,在我可以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
需要吗?有没有一种替代方法可以只在一个事务中运行两个或多个语句?
您可以transactionally
在所有上使用DBIOAction
,而不仅仅是对for理解的结果。例如,您可以transactionally
与DBIO.seq
方法结合使用,该方法采取一系列操作并按顺序运行它们:
val firstAction = table1.filter(_.id === id1).delete
val secondAction = table2.filter(_.id === id2).delete
val combinedAction = DBIO.seq(
firstAction,
secondAction
).transactionally
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句