首页 > 解决方案 > 不区分大小写的唯一性 - 如何更新当前记录,无论大小写?

问题描述

我在 Postgres 之上使用 Hasura 来存储公司和其他信息。源数据具有相同的记录拼写,但在不同的情况下 - 例如:

姓名 国家
Reckitt Benckiser (Aust) Pty Ltd 我们
RECKITT BENCKISER (AUST) PTY LTD 非盟

我有一个关于公司名称的索引:

CREATE UNIQUE INDEX name_company_unique_idx on company (LOWER(name));

当我“更新”第二条记录时,它会引发唯一性错误,因此索引工作正常。但是我想要的是第二条记录实现第一条记录是同一件事,并将国家更新为 AU。如果我没有索引,我会在不同的情况下获得同一实体的两条记录。

我不想以大写或小写形式存储所有内容,但很高兴它能够采用插入的第一条记录的任何情况。

如何使 upsert 流程案例不可知?

标签: postgresqlgraphqlhasura

解决方案


您可以对表列使用不区分大小写的排序规则或citext扩展名,并在列上使用INSERT ... ON CONFLICT正常的唯一约束。


推荐阅读