PostgreSQL:非空JSON对象的CHECK约束

时间:2015-01-08 17:34:39

标签: postgresql constraints jsonb postgresql-9.4

我想在JSONB列上有一个CHECK约束,它只允许非空的JSON对象(只有{}具有属性,没有其他值,如[]或JSON基元。

我只想检查“root”值,这些对象中存储的内容无关紧要。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

"Fak'n & \" account/\\home"

答案 1 :(得分:1)

就像任何检查约束一样,使用<>运营商。来自manual

  

表9-1中显示的标准比较运算符可用   jsonb,但不是json。

表9.1显示了不等于运算符<>:

create table foo(
    bar jsonb,
    constraint baz check(bar <> '{}'::jsonb)
);

insert into foo(bar) values('{"foo": 1}'::jsonb);
insert into foo(bar) values('{}'::jsonb); -- fails