If a row does not exists insert else don't insert in postgres
我需要检查行是否存在。如果不存在,则应插入。
这是在postgres中,我试图通过shell脚本插入行。当我运行脚本时,它不会显示错误,但不会插入到表中,即使不存在匹配的行。
- 如果没有"匹配行",请张贴您正在使用的脚本和用于测试的语句。
- 请参阅此链接stackoverflow.com/questions/4555966/…
- 如果您可以使用Ruby作为脚本语言,那么您可以尝试使用Upsert。
- 我很不高兴(不要与upsert混淆),你们中的许多人忽视了insert if not exists(如果不存在)和upsert(错误标记的重复问题)之间的区别。
- 这不是链接问题的副本;其答案在此处不完全适用。它可能是另一个问题的副本。
- 这绝对不是链接问题的副本。请投票重新开放。
我喜欢他们在这里提到的解决方案
1 2 3
| INSERT INTO TABLE (id, FIELD, field2)
SELECT 3, 'C', 'Z'
WHERE NOT EXISTS (SELECT 1 FROM TABLE WHERE id=3); |
- 我试过这个解决方案,但它不能像低版本那样工作。因此,我想将它们分成两个不同的查询。
- Postgres现在还有一个upsert命令,您可以在其中插入或更新行:wiki.postgresql.org/wiki/upsert
- 在9.5+、INSERT ... ON CONFLICT DO NOTHING或INSERT ... ON CONFLICT UPDATEstackoverflow.com/a/17267423/1386245上