我试图设置两列(name
和a
)之一,text
类型之一和json
类型之一之间的唯一约束。我如何在Postgres 9.6.3中构造这个?如何设置具有多列的嵌套JSON的唯一约束
一个例子行的样子:
{ name: 'someName',
a: {
b: {
c: 'some text'
}
}
}
什么是Postgres的命令来创建一个表吗?目前我有这个,它在(
附近给出了一个语法错误。
CREATE TABLE行动( ID BIGINT NOT NULL, 名文本, 一个JSON, 唯一(姓名,有效载荷:: JSON#>> '{消息,有效载荷,内容}') );
我也试过
CREATE TABLE action (
id bigint NOT NULL,
name text,
a json
);
ALTER TABLE actions ADD CONSTRAINT actions_constraint UNIQUE (payload::json#>>'{b, c, d}', name);
它不断给我这个错误:
ERROR: syntax error at or near "::"
如何创建这个约束?
谢谢,实际上我的工作是从'{a,b,c}'中删除'a'。因此,答案是“在行动上创建独特的INDEX actions_constraint(((a#>>'{b,c}'):: text),name); '。你能证实这一点,并改变它,所以我可以upvote你的答案? – writofmandamus
@writofmandamus如你所愿 – cske