Eog*_*anM 87 postgresql constraints unique-constraint
我想添加一个约束,该约束仅在表的一部分中强制列的唯一性.
ALTER TABLE stop ADD CONSTRAINT myc UNIQUE (col_a) WHERE (col_b is null);
Run Code Online (Sandbox Code Playgroud)
WHERE上面的部分是一厢情愿的想法.
这样做的任何方式?或者我应该回到关系绘图板?
Cra*_*ger 150
PostgreSQL没有定义部分(即条件)UNIQUE约束 - 但是,您可以创建部分唯一索引.PostgreSQL使用唯一索引来实现唯一约束,因此效果是一样的,你只是看不到列出的constaint information_schema.
CREATE UNIQUE INDEX stop_myc ON stop (col_a) WHERE (col_b is NOT null);
Run Code Online (Sandbox Code Playgroud)
查看部分索引.
Pet*_*nko 24
已经说过PG没有定义部分(即条件)UNIQUE约束.此外,文档说,向表中添加唯一约束的首选方法是ADD CONSTRAINT Unique Indexes
向表中添加唯一约束的首选方法是ALTER TABLE ... ADD CONSTRAINT.使用索引来强制执行唯一约束可以被视为不应直接访问的实现细节.但是,应该知道没有必要在唯一列上手动创建索引; 这样做只会复制自动创建的索引.
有一种方法可以使用排除约束来实现它(感谢@dukelion这个解决方案)
在你的情况下,它看起来像
ALTER TABLE stop
ADD CONSTRAINT stop_col_a_key_part EXCLUDE (col_a WITH =) WHERE (col_b IS null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29653 次 |
| 最近记录: |