Postgres Insert Into On conflict do update
我想使用on conflict do update-feature将数据从一个表("tmp")插入到另一个表("tbla")中。
我的代码:
1 2 3 4 5 6 | INSERT INTO tbla (id, col1, col2, col3) SELECT id, col1, col2, col3 FROM tmp ON CONFLICT ON CONSTRAINT pkey_tbla DO UPDATE SET col1=tmp.col1 FROM tmp; DROP TABLE tmp; |
这段代码在"FROM tmp"中给了我一个语法错误
如果没有FROM,则表"错误":表"tmp"缺少FROM子句条目
关于我做错的任何建议?
DB-Server在带有postgres 9.5的Windows 7机器上的localhost上运行
文档"请注意,特殊排除表用于引用最初建议插入的值"https://www.postgresql.org/docs/9.5/static/sql-insert.html
修复:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | x=> SELECT * FROM tbla; id | col1 ----+------ 1 | 2 2 | 3 (2 ROWS) x=> TRUNCATE tmp; TRUNCATE TABLE x=> INSERT INTO tmp(id,col1) VALUES (1,42); INSERT 0 1 x=> INSERT INTO tbla(id,col1) SELECT id,col1 FROM tmp -- wrap line ON CONFLICT (id) DO UPDATE SET col1=EXCLUDED.col1; INSERT 0 1 sh161119=> SELECT * FROM tbla; id | col1 ----+------ 2 | 3 1 | 42 (2 ROWS) |