gpt4 book ai didi

scala - 为什么这个 ScalaQuery 语句只删除奇数行?

转载 作者:行者123 更新时间:2023-12-03 01:15:43 25 4
gpt4 key购买 nike

尝试删除一批记录时,仅删除奇数行!

val byUser = Orders.createFinderBy(_.userID)
byUser(id).mutate(_.delete)

如果我打印记录,我会得到正确的行数。

byUser(id).mutate{x => x.echo}

我像这样解决了这个问题,它生成了所需的 SQL。

(for{o <- Orders if o.userID is id.bind } yield o).delete

但是,为什么或如何变异版本只影响奇数行?

最佳答案

我深入研究了源代码,似乎正如@RexKerr所说 - 迭代器用于处理元素,在迭代时应用删除(此处 mutate 方法中的 while 循环):

https://github.com/rjmac/scala-query/blob/master/src/main/scala/org/scalaquery/MutatingInvoker.scala

有趣的是,有一个 previousAfterDelete 标志可用于在每次删除后强制迭代器向后移动。对于 Access 数据库,这似乎设置为 true(请参阅 AccessQueryInvoker 类),但其他数据库则不然:

https://github.com/rjmac/scala-query/blob/master/src/main/scala/org/scalaquery/ql/extended/AccessDriver.scala

我建议下载源代码并调试代码。也许应该为您正在使用的数据库供应商设置此标志。我还会考虑提交错误报告:

http://scalaquery.org/community.html

PS。我知道这是一个老问题,但回答它以防其他人遇到这个问题

关于scala - 为什么这个 ScalaQuery 语句只删除奇数行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11229503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com