我正在使用 PostgreSQL,并希望使用一条语句INSERT
一次处理多行。ON CONFLICT DO UPDATE
我有这样的事情:
-- :name add-things! :! :n
INSERT INTO my_table (
p,
foo
)
VALUES :tuple*:values
ON CONFLICT (p) DO UPDATE
SET my_table.foo = foo
p
主键在哪里。
我称之为:
(add-things! {:values [[1 1] [2 3]]})
但这会返回:
org.postgresql.util.PSQLException: ERROR: column reference "foo" is ambiguous
.
使用SET my_table.foo = :foo
(带有关键字参数)导致,因为使用语法clojure.lang.ExceptionInfo: Parameter Mismatch: :foo parameter data not found
时没有关键字参数。:tuple*:values
知道如何做到这一点吗?也许通过在 HugSQL 查询中使用 Clojure 代码?