如何在 Slick 中获取组合 DBAction 的单独结果

问题描述 投票:0回答:1

我需要针对这种情况的帮助。 我必须在表 A 中插入多条记录,在表 B 中插入一条记录。我需要在单个事务中插入所有这些记录,但还需要为每个 DBAction 获取单独的结果

    val tableAInserts:Seq[ProfileAction] = Seq(insertAction1TableA, insertAction2TableA, insertAction3TableA, ...)
    val tableBInsert:ProfileAction = singleInsertProfileActionTableB

    val allActions = Seq(tableAInserts) ++ tableBInsert
    db.run(DBIO.sequence(allActions).transactionally)

所以我需要知道分别对 tableA 和 tableB 进行了多少次插入 这可能吗? 感谢您的指导。

scala slick
1个回答
0
投票

你可以尝试使用for-complexion:

val tableA = TableQuery[TableA]
val tableB = TableQuery[TableB]

val tableAInserts: DBIO[Option[Int]] = tableA ++= Seq(...)
val tableBInsert: DBIO[Int] = tableB += (...)

val res: DBIO[(Option[Int], Int)] = (for {
  optN <- tableAInserts
  m <- tableBInsert
} yield (optN, m)).transactionally

val fut: Future[(Option[Int], Int)] = db.run(res)
© www.soinside.com 2019 - 2024. All rights reserved.