возможно ли выполнить многозначную апсерт в PostgreSQL? Я знаю, что существуют вставки с несколькими значениями, как и ключевые слова «ON CONFLICT» для выполнения обновления, если ключ нарушен... но возможно ли объединить их? Как-то так...
INSERT INTO table1(col1, col2) VALUES (1, 'foo'), (2,'bar'), (3,'baz')
ON CONFLICT ON CONSTRAINT theConstraint DO
UPDATE SET (col2) = ('foo'), ('bar'), ('baz')
Я гуглил crud из этого и не мог найти ничего об этом.
У меня есть приложение, использующее pg-promise, и я выполняю пакетную обработку. Он работает, но ужасно медленно (например, 50 строк каждые 5 секунд или около того...). Я подумал, что если бы я мог покончить с пакетной обработкой и вместо этого правильно построить этот многозначный запрос upsert, это могло бы повысить производительность.
Редактировать: Ну... Я только что попробовал это сам, и нет, это не работает. Если я не делаю это неправильно. Итак, теперь я думаю, что мой вопрос изменился на то, какой хороший способ реализовать что-то подобное?