Возможный дубликат:
Вставить при дублировании обновления (postgresql)
Невозможно ВЫБРАТЬ из предложения UPDATE RETURNING в postgres а>
Помогите мне разобраться в синтаксической ошибке. Я пытаюсь сделать такую реализацию запроса upsert в PosgreSql:
create table tbl( key int, val int);
insert into tbl(key,val)
select distinct(key), 0 from unnest('{0,1,2,3,4,5}'::int[]) as key
where key not in (
update tbl set val = 1
where key = any('{0,1,2,3,4,5}'::int[])
returning key
);
ошибка:
ERROR: syntax error at or near "tbl"
ROWS 6: update tbl set val = 1
^
********** Error **********
ERROR: syntax error at or near "tbl"
SQL state: 42601
Character: 167
Но подзапрос обновления без вставки части работает хорошо.
Есть ли самый простой способ сделать запрос upsert?