如果表中的列中尚不存在值,则如何插入新行

时间:2016-12-23 18:13:21

标签: postgresql

标题说明了一切。我知道有一百万个非nodejs解决方案,但我需要一个与node-postgres模块配合使用的解决方案。

(注意:我使用Heroku作为主机,因此我可以免费获得Postgresql访问权限,这意味着我无法创建/添加功能,因为它是免费版本。)

1 个答案:

答案 0 :(得分:0)

As of PostgreSQL 9.5(Heroku自2016年初开始使用),如果存在重复条目(由现有唯一性约束确定),则可以忽略插入。

以下示例来自PostgreSQL wiki:

INSERT INTO countries (country) VALUES ('France'),('Japan') ON CONFLICT DO NOTHING;

上述插入查询将忽略任何冲突。但是,这可能并不理想,因此您可以做的是明确说明在决定忽略插入时应考虑哪些约束:

INSERT INTO countries (country) VALUES ('France'),('Japan') ON CONFLICT ON CONSTRAINT countries_pkey DO NOTHING;

INSERT INTO countries (country) VALUES ('France'),('Japan') ON CONFLICT (country) DO NOTHING;

这样就不会吞下其他约束,但仍然会导致错误。