gpt4 book ai didi

postgresql - Clojure java.jdbc return-keys 选项只返回一行

转载 作者:行者123 更新时间:2023-12-03 23:48:47 25 4
gpt4 key购买 nike

使用 org.clojure/java.jdbc "0.7.11"和 PostgreSQL 11.5

似乎 return-keys 选项只返回第一行作为 map ,而不是完整的列表

例子:

(jdbc/execute!
db
"INSERT INTO test_table(letter) VALUES ('A'), ('B');"
{:return-keys ["letter"]})

=> {:letter "A"}

我希望得到的返回是类似 ({:letter "A"} {:letter "B"}) 的东西。

这两行都没有问题地插入到数据库中。

我知道我可以使用 insert-multi 来代替并取回行,但我真正想做的是更新,所以它需要执行,只是认为这是显示问题的最简单方法.

有谁知道为什么我只返回一行键,有没有办法返回所有行?

最佳答案

我想你可能需要的是:

(jdbc/execute!
db
["INSERT INTO test_table(letter) VALUES (?)"
["A"] ["B"]]
{:return-keys ["letter"] :multi? true})

指定 :multi? true导致库使用 .executeBatch而不是 .executeUpdate你应该得到多个结果。

如果您使用 next.jdbc相反,你不会有这个问题:

(next.jdbc/execute!
db
["INSERT INTO test_table(letter) VALUES ('A'), ('B')"]
{:return-keys ["letter"]})

这应该返回两个插入的键。

请注意 clojure.java.jdbc被认为是“稳定的”,这意味着它不再获得新功能。所有当前和 future 的开发工作都将进入 next.jdbc在这一点上(部分是因为上述问题)。 next.jdbcclojure.java.jdbc 的 1.0 版本从未有过。

https://github.com/seancorfield/next-jdbc

关于postgresql - Clojure java.jdbc return-keys 选项只返回一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60729152/

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