唯一约束在排序顺序选项上的影响

当列或列列表在 CREATE TABLE 或 ALTER TABLE 语句中定义为唯一时,数据库服务器通过创建唯一升序索引实施 UNIQUE CONSTRAINT 。因此,您无法使用 CREATE INDEX 语句来将升序索引添加到已经定义为唯一的列或列列表上。

然而,您可以在这样的列上创建降序索引,并且可以将这些列包含在不同组合的组合升序索引中。例如,以下序列的语句是有效的:
CREATE TABLE customer (
        customer_num  SERIAL(101) UNIQUE,
        fname                CHAR(15),
        lname                CHAR(15),
        company              CHAR(20),
        address1             CHAR(20),
        address2             CHAR(20),
        city                 CHAR(15),
        state                CHAR(2),
        zipcode              CHAR(5),
        phone                CHAR(18)
        );
        
        CREATE INDEX c_temp1 ON customer (customer_num DESC);
        CREATE INDEX c_temp2 ON customer (customer_num, zipcode);

在此示例中,在 customer_num 列上放置了一个唯一约束。第一个 CREATE INDEX 语句在 customer_num 列上放置一个按降序顺序排序的索引。第二个 CREATE INDEX 将 customer_num 列作为复合索引的一部分包含。关于复合索引的更多信息,请参阅 创建复合索引