通常您會在事務中運行兩個或多個語句。但在所有可以在Slick 3中使用transactionally
找到的例子中,我通常在循環中使用for
來理解將這些語句分組。在Slick 3中以事務方式使用
這個工作(從兩個表中刪除一個事務):
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
需要的?有沒有其他的方法可以在事務中運行兩個或多個語句?
你的例子似乎是不正確的。每個'map'調用實際上應該是'flatMap'調用,其他地圖上的最後一個動作不會被執行,它只會創建一個動作並放棄它。 –