通常、トランザクション内で複数のステートメントを実行します。しかし、私がSlick 3でtransactionally
を使用して見つけたすべての例では、ループ内で通常for
を使用するときに、これらのステートメントをグループ化するための理解があります。Slick 3でトランザクションを使用する
これは(トランザクション内の2つのテーブルから削除)作品:
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
のですか?トランザクション内で2つ以上のステートメントを実行する代わりの方法がありますか?
あなたの例が正しくないように見えます。それぞれの 'map'呼び出しは実際には' flatMap'呼び出しでなければなりません。それ以外の場合、マップ内の最後のアクションは実行されません。アクションを作成して破棄します。 –