【问题标题】:How can I make a key pair primary?如何使密钥对成为主要密钥对?
【发布时间】:2012-01-12 16:02:30
【问题描述】:

我有一个不需要特定字段作为主键的表。我可以添加一个自增 ID 字段,但它根本不会在数据库查询中使用...

我也可以将唯一键设置为主键吗?

UNIQUE KEY 由两个配对的字段组成:

a VARCHAR(64) NOT NULL,
b VARCHAR(64) NOT NULL,
UNIQUE KEY uk_ab(a,b)

【问题讨论】:

    标签: php mysql database database-design


    【解决方案1】:

    不确定这是否可行...

    PRIMARY KEY uk_ab(a,b)
    

    【讨论】:

      【解决方案2】:

      当然(不需要UNIQUE KEY):

      PRIMARY KEY (a, b)
      

      看看documentation

      PRIMARY KEY 是一个唯一索引,其中所有键列都必须定义为 NOT NULL。如果它们没有显式声明为NOT NULL,MySQL 会隐含地(并且默默地)声明它们。一张表只能有一个PRIMARY KEYPRIMARY KEY 的名称始终为 PRIMARY,因此不能用作任何其他类型索引的名称。

      PRIMARY KEY 可以是多列索引。但是,您不能使用列规范中的 PRIMARY KEY 键属性创建多列索引。这样做只会将该单列标记为主要列。您必须使用单独的PRIMARY KEY(index_col_name, ...) 子句。

      【讨论】:

        【解决方案3】:

        如果您的表已经有唯一约束,那么您需要添加主键 (ALTER TABLE [table_name] ADD CONSTRAINT [constraint_name] PRIMARY KEY (a,b)),并删除现有的唯一约束。否则,您将在同一列上有 2 个唯一索引。
        如果创建新表,请使用PRIMARY KEY(a,b),而不是其他人建议的UNIQUE(a,b)

        【讨论】:

          猜你喜欢
          • 2022-11-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-21
          • 2013-06-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多