【问题标题】:Slick 3.0 delete and returning valuesSlick 3.0 删除和返回值
【发布时间】:2015-08-20 16:42:26
【问题描述】:

如果我在插入新行时想要返回值,我可以这样做

val insertQuery = myTable returning myTable.map(_.id) += SomeData(someString)

如何在删除的时候达到同样的效果?

我试过了

val deleteQuery = myTable filter (_.id ===id) returning myTable.map(_.someColumn) delete

但显然这不会编译。

我可以求助于for 理解,但我想知道是否有更短的方法。

【问题讨论】:

  • 删除的返回值是删除的行数。我想如果你想自己返回值,你需要先选择它们,然后再删除它们。

标签: scala slick-3.0


【解决方案1】:

据我所知,最好的方法是执行以下操作:

val query = db.filter(....)
val action = for {
   results <- query.result
   _ <- query.delete
} yield results
db.run(action.withTransactionIsolation(TransactionIsolation.RepeatableRead))

希望它更短。

【讨论】:

  • 如问题中所述。使用for理解显然有效。我正在寻找内联解决方案。
猜你喜欢
  • 1970-01-01
  • 2012-10-17
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
  • 1970-01-01
  • 2015-07-24
  • 2021-12-05
  • 1970-01-01
相关资源
最近更新 更多