Обычно вы выполняете два или более оператора транзакции. Но во всех примерах, которые я мог найти при использовании transactionally
в Slick 3, для понимания этих операторов необходимо понять, когда я обычно использую 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 », иначе, если последнее действие на карте не будет выполнено, оно просто создаст действие и отменит его. –