【发布时间】:2017-05-25 03:48:27
【问题描述】:
为什么在 Slick 查询中组合 SELECT 和 DELETE 语句不起作用?如:
val query = (for {
item <- SomeTable
_ <- OtherTable.filter(_.id === item.id).delete
} yield ()).transactionally
“无法以'事务方式'解析符号”
(没有.transactionally,它是Query[Nothing, Nothing, Seq],如果有帮助的话)
而这两个动作是分开工作的:
val query = (for {
item <- SomeTable
} yield ()).transactionally
,
val query = (for {
_ <- OtherTable.filter(_.id === 2).delete
} yield ()).transactionally
【问题讨论】:
-
试试
item <- SomeTable.result。我无法编译第二个示例,SomeTable是TableQuery对吗? -
我试过了。然后我不能使用
item过滤第二个表,删除与否(我更新了第一个 sn-p 以显示这种情况)。真正的查询更复杂。 -
@insan-e
SomeTable是TableQuery,是的。您也可以在其后添加filter。您可以使用for链接选择语句,或删除语句,但显然不能同时使用。 -
使用
item <- SomeTable.result,您将获得Seq[ModelRow](来自SomeTable的行列表)。你必须说类似OtherTable.filter(_.id.inSet(item.map(_.id)).delete。 -
@insan-e 好像是这样!谢谢
标签: scala transactions slick slick-3.0