Postgres的文档让人觉得WHERE子句可以作为ON CONFLICT条件:https://www.postgresql.org/docs/9.5/static/sql-insert.html
我还没有成功实现这个(如果可能的话)。以下是我尝试过的其中一种组合:
INSERT INTO friends (id, dob, frn, status, "groupId",
"createdAt", "updatedAt")
VALUES ('1da04305-68ef-4dc1-be6c-
826ab83a6479', '1937-06-01T08:29:08-07:00', 100001, 'New', 'bc1567bc-
14ff-4ba2-b108-4cb2e0f0f768', NOW(), NOW())
ON CONFLICT
WHERE frn=100001 DO NOTHING
frn没有任何限制,因此更简单的语法:
ON CONFLICT (frn) DO NOTHING
抛出数据库错误。我希望这只是一个简单的语法问题。
frn
上实现唯一性吗?如果是这种情况,你应该在frn
上设置一个唯一约束。 - pozsUPSERT
,您只能执行ON CONFLICT(“groupId”,frn)
。--如果您只想检查frn
:没有高并发安全的解决方案。 - pozs