Généralement, vous exécutez deux instructions ou plus dans une transaction. Mais dans tous les exemples que j'ai pu trouver en utilisant transactionally
dans Slick 3, il y a un moyen de comprendre ces groupes, quand j'utilise habituellement le for
en boucle.Utilisation transactionnelle dans Slick 3
Cela fonctionne (suppression de deux tables dans une transaction):
val action = db.run((for {
_ <- table1.filter(_.id1 === id).delete
_ <- table2.filter(_.id2=== id).delete
} yield()).transactionally)
val result = Await.result(action, Duration.Inf)
Mais est le for/yield
nécessaire? existe-t-il une alternative pour exécuter deux instructions ou plus dans une transaction?
Vos exemples semblent être incorrectes. Chacun des appels 'map' devrait en fait être des appels' flatMap', sinon la dernière action de map ne sera pas exécutée, elle créerait simplement une action et la supprimerait. –