libpq 是否支持等效于 Oracle 的数组绑定?



Oracle有一个他们称之为数组绑定的东西(来自文档(,其中发送的SQL可以是UPDATE mytable SET val = :2 WHERE id = :1以及一个包含内容的数组绑定:

1 | val1
2 | val2
3 | val3

(PS。阵列的大小>1000个项目,这3个项目用于说明。(

这是高效的,并且只需到服务器的一次往返就可以完成。

使用libpq也可以这样做吗?

不,PostgreSQL没有这样的东西。

我将使用用PQprepare创建的命名prepared语句,并使用PQexecPrepared为每一行执行它。类似的想法,但不同的方法。

如果你的意图是尽量减少往返,那么你可以做这样的事情:

UPDATE mytable m
SET val = t.val
from ( 
values (:1, :2), (:3, :4), (:5, :6), ....
) as t(id,val)
WHERE t.id = m.id;

相关内容

  • 没有找到相关文章

最新更新