wri*_*mus 2 sql postgresql unique-constraint
我试图在两列(name和a)之间设置唯一约束,一列为 type text,另一列为 type json。我如何在 Postgres 9.6.3 中构建它?
示例行如下所示:
{ name: 'someName',
a: {
b: {
c: 'some text'
}
}
}
Run Code Online (Sandbox Code Playgroud)
为此创建表的 postgres 命令是什么?目前我有这个,它在 附近给出了语法错误(。
创建表操作(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);
Run Code Online (Sandbox Code Playgroud)
这一直给我这个错误:
ERROR: syntax error at or near "::"
Run Code Online (Sandbox Code Playgroud)
我怎样才能创建这个约束?
如果您检查文档创建表
table_constraint 是:
[约束约束名]
UNIQUE ( 列名 [, ... ] )
UNIQUEinCREATE TABLE只接受列名
因此,如果您想要在表达式上建立索引,则必须在创建表后添加它,命令是CREATE INDEX(无法通过 alter table 完成)
create unique INDEX actions_constraint on action (((a#>>'{b, c}')::text), name);
Run Code Online (Sandbox Code Playgroud)
CREATE [唯一]索引[同时][[如果不存在]名称]ON表名[使用方法]({列名|(表达式)}
| 归档时间: |
|
| 查看次数: |
2284 次 |
| 最近记录: |