我試圖設置兩列(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