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;