Upsert违反了Postgres中的独特约束

时间:2018-10-11 12:56:54

标签: sql postgresql upsert

我正在尝试根据jsonb contacts_unique_idx列,布尔data列和{{1上的部分唯一索引(称为deleted)在Postgres中增加联系记录}}布尔列:

duplicated

我的upsert函数(为简便起见,下面删除了CREATE UNIQUE INDEX contacts_uniqueness_idx ON contacts( (data->>'customerId'), LOWER(COALESCE(data->'data'->'profile'->'location'->>'formatted', '')), LOWER(COALESCE(data->'data'->'profile'->'name'->'anglican'->>'given', '')), LOWER(COALESCE(data->'data'->'profile'->'name'->'anglican'->>'middlename', '')), LOWER(COALESCE(data->'data'->'profile'->'name'->'anglican'->>'surname', '')), LOWER(COALESCE(data->'data'->'profile'->'name'->'anglican'->>'suffix', '')), LOWER(COALESCE(data->'data'->'profile'->'name'->'anglican'->>'title', '')) ) WHERE deleted = false and duplicated = false )成功插入了一个联系人记录和多个联系人记录(如果它们不存在)。如果我将单个值传递给upsert,它还将成功更新现有记录,并根据现有记录数据和更新的记录数据(根据的values部分在data列上构建新的jsonb对象)功能。

但是,在将多个值传递给upsert时,我收到一个错误:DO UPDATE,应该在该约束上进行更新。

ERROR: duplicate key value violates unique constraint "contacts_unique_idx"

这是并发问题吗?为什么我只能添加单个记录但不能多个记录?

0 个答案:

没有答案