Я работаю с 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
.
Есть идеи, как этого добиться?Может быть, используя код Clojure в запросе HugSQL?