之间是否存在差异:
CREATE TABLE p(
product_no integer,
name text UNIQUE,
price numeric
);
和
CREATE TABLE p(
product_no integer,
name text,
price numeric
);
CREATE UNIQUE INDEX customername
ON p
USING btree
(name COLLATE pg_catalog."default");
两种情况下名称都是唯一的吗?当索引是唯一的时,它意味着什么?
编辑:Postgres unique constraint vs index没有回答我的问题。它考虑了FK的案例。我的问题与FK没有任何关系。我只是想知道这两个操作是否等效在此示例中,其中不涉及FK。
答案 0 :(得分:4)
是的,有一点不同。如果您定义了唯一的约束,则它在information_schema
等目录中可见。对于唯一索引,情况并非如此。
此外,您可以创建部分唯一索引等内容,但不能在约束上执行此操作。
最后,唯一约束是SQL标准。
唯一约束暗示创建唯一索引,但反之亦然。
使用唯一约束,除非您有充分的理由直接创建唯一索引。
答案 1 :(得分:2)