Postgresql upsert 查询
Postgresql upsert 查询
此问题已经有答案了:
可能的重复:
帮帮我理解语法错误。我试图在PosgreSql中进行upsert查询的实现:
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查询?
admin 更改状态以发布 2023年5月22日
你的问题被建议为重复问题,因为解决PostgreSQL没有UPSERT命令的方法已经发布,这确实回答了你如何实现UPSERT的问题。
关于你的语法错误问题,你试图做的当前是不可能的。你将会发现,在即将推出的PostgreSQL 9.1版本中,它支持在WITH子句中修改数据语句的一种变体:
http://www.postgresql.org/docs/9.1/static/queries-with.html#QUERIES-WITH-MODIFYING