【问题标题】:How to create multiple primary indexes for a table?如何为一个表创建多个主索引?
【发布时间】:2020-03-03 13:38:19
【问题描述】:

我很好奇为多个列创建主键是否使用与为多个列创建主索引相同的格式,如下所示?假设我想为下表设置两个主索引,是否正确?

CREATE TABLE sample_1
 (col_a INT
 ,col_b INT
 ,col_c INT)
 PRIMARY INDEX (col_b, col_c);

【问题讨论】:

  • 这适用于 SQL Server 吗?您不能有两个主索引。 Check out this question.
  • 它用于 teradata..
  • 那你为什么不提?它应该是一个标签。我刚刚添加了它。
  • 在 Teradata 中,主索引和主键不可互换 - 请参阅 documentation
  • 因此,如果 col_a 列是主键和 UPI,我应该只声明主键 (col_a),它会自动指示它是两者……对吗?如果它是一个主键,但是一个 NUPI 呢?我应该如何声明它,因为它不允许声明两次,一次用于 PK,另一次用于 NUPI...

标签: indexing teradata create-table composite-primary-key


【解决方案1】:

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 将实现为 唯一二级索引,例如

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 2020-05-23
    • 1970-01-01
    • 2020-09-24
    • 2013-12-12
    • 1970-01-01
    • 2012-07-09
    相关资源
    最近更新 更多