Нет простой команды для этого.
Самый правильный подход - использовать функцию, такую как функция из docs .
Другое решение (хотя это и не так безопасно) заключается в том, чтобы выполнить обновление с возвратом, проверить, какие строки были обновлениями, и вставить остальные из них
Что-то по строкам:
update table
set column = x.column
from (values (1,'aa'),(2,'bb'),(3,'cc')) as x (id, column)
where table.id = x.id
returning id;
: 2 было возвращено:
insert into table (id, column) values (1, 'aa'), (3, 'cc');
Конечно, он рано или поздно выйдет из строя (в параллельной среде), так как здесь есть явное состояние гонки, но обычно оно будет работать.