我有一个Postgres表messages
,如下所示:
Column | Type | Collation | Nullable |
-----------+--------------------------+-----------+----------
id | integer | | not null |
message | jsonb | | |
date | timestamp with time zone | | not null |
id | message | date
1 | {"name":"alpha", "pos":"x"} | 2020-02-11 12:31:44.658667+00
2 | {"name":"bravo", "pos":"y"} | 2020-02-11 12:32:43.123678+00
3 | {"name":"charlie", "pos":"z"}| 2020-02-11 12:38:37.623535+00
[我想做的是根据name
键的值进行UPSERT,即,如果有一个具有相同name
值的插入,则更新另一个值pos
,否则输入一个新条目已创建。
我做了CREATE UNIQUE INDEX message_name ON messages((message->>'name'));
[我在Postgres 9.5+中找到了INSERT ON CONFLICT,但我不明白该如何使用唯一索引。
首先我不知道这是否是正确的方法,因此,如果有更好的方法,我将不胜感激。
我有一个Postgres表消息,如下所示:列|类型整理|可空| ----------- + -------------------------- + ----------- + ---------- id ...
您需要从索引中重复该表达式: