使用Postgres中的jsonb(与Django的JSONField一起使用),唯一索引实际上做了什么?

时间:2016-09-06 17:21:48

标签: django postgresql

class JsonHavingModel(models.Model):
  the_field = JSONField(unique=True)

这有点像:

CREATE UNIQUE INDEX app_jsonhavingmodel_the_field_c1f3c983_uniq ON app_jsonhavingmodel (the_field);

但这究竟意味着什么?它只检查键吗?只是价值观?只是文字JSON文本?是检查整个对象层次结构吗?这是一个愚蠢的问题吗?生命的意义是什么?

1 个答案:

答案 0 :(得分:5)

这正是您所期望的意思 - 该列中的值必须在该表中是唯一的。

假设你的列是一个jsonb值,这意味着比较结构是否相等。

SELECT '{"a":3, "b":2}'::jsonb = '{"b":2, "a":3}'::jsonb;
 ?column? 
----------
 t
(1 row)