Indexing 如何为一个表创建多个主索引?

Indexing 如何为一个表创建多个主索引?,indexing,teradata,create-table,composite-primary-key,Indexing,Teradata,Create Table,Composite Primary Key,我很好奇,为多列创建主键是否使用与为多列创建主索引相同的格式,如下所示?假设我希望下表有两个主索引,对吗 CREATE TABLE sample_1 (col_a INT ,col_b INT ,col_c INT) PRIMARY INDEX (col_b, col_c); Teradata中不能有两个主索引,PI类似于其他DBMS中的聚集索引。只能有一个 PK定义为列定义的一部分: CREATE TABLE sample_1 (col_a INT ,col_b INT NOT

我很好奇,为多列创建主键是否使用与为多列创建主索引相同的格式,如下所示?假设我希望下表有两个主索引,对吗

CREATE TABLE sample_1
 (col_a INT
 ,col_b INT
 ,col_c INT)
 PRIMARY INDEX (col_b, col_c);
Teradata中不能有两个主索引,PI类似于其他DBMS中的聚集索引。只能有一个

PK定义为列定义的一部分:

CREATE TABLE sample_1
 (col_a INT
 ,col_b INT NOT NULL
 ,col_c INT NOT NULL
 ,PRIMARY KEY (col_b, col_c)); -- UPI
在这种情况下,它将作为唯一的主索引实现

如果同时添加PI和PK,则PK将实现为唯一的二级索引,例如


这是SQL Server的吗?不能有两个主索引。这是teradata的,你为什么不提呢?它应该是一个标签。我刚刚添加了它。在Teradata中,主索引和主键是不可互换的-请参阅,因此如果列col_a是主键和UPI,我应该只声明主键(col_a),这将自动指示它同时是主键和UPI…对吗?如果它是一个主键,但是是一个NUPI呢?我应该如何声明它,因为它不允许声明两次,一个用于PK,另一个用于NUPI。。。
CREATE TABLE sample_1
 (col_a INT
 ,col_b INT NOT NULL
 ,col_c INT NOT NULL
 ,PRIMARY KEY (col_b, col_c)) -- USI
PRIMARY INDEX (col_a);        -- NUPI