【问题标题】:How to create second primary column ( Auto Increment) [duplicate]如何创建第二个主列(自动增量)[重复]
【发布时间】:2014-09-27 08:16:09
【问题描述】:

我有这样的桌子

------------------------
Id  |  MergeId  | name |
------------------------
1   |   M1      | Riya |
2   |   M2      | diya |
3   |   M3      | tiya |
------------------------

MergeId 已被指定为主键,现在我想要一个新的列 ID(自动增量),但是当我尝试创建它时,我会显示“无法创建一个表应该只有一个主键” 但我不能将我的 MergeId 从 Primary 更改为其他约束。 求大神帮忙,谢谢

查询

ALTER TABLE  `merge_info` ADD  `id` INT( 11 ) NOT NULL AUTO_INCREMENT FIRST ,
ADD PRIMARY KEY (  `id` ) ,
ADD INDEX (  `id` ) ;

错误

#1068 - Multiple primary key defined 

【问题讨论】:

  • 我对你的问题感到困惑;您当然可以在不作为主键的情况下使列自动递增。这真的是这里唯一的问题,还是有其他问题?
  • 请显示您用于添加自动增量列的代码。
  • 如何在没有主键的情况下自动递增

标签: php mysql


【解决方案1】:

您只能有一个主键。但是,您可以将列设置为自动递增。我认为你试图得到的是将这张桌子与另一张桌子连接起来,对吗?我相信它们被称为外键,但我认为这仅适用于 MSSQL,从未将它们与 MySQL 一起使用。

自动增量取决于您的操作。 PHPMyAdmin 您只需选择它作为列属性之一。

PHPMyAdmin:

Auto increment in phpmyadmin

SQL:

CREATE TABLE table
(
ID int NOT NULL AUTO_INCREMENT,
ID2 int NOT NULL AUTO_INCREMENT.
PRIMARY KEY (ID)
)

根据吉姆:

SQL:

CREATE TABLE table
(
ID int NOT NULL AUTO_INCREMENT,
ID2 int NOT NULL,
PRIMARY KEY (ID),
UNIQUE (ID2)
)

想了想:

查看此链接,它可能比其他任何东西都更有益。下次请更具体。

http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html

【讨论】:

  • 可能还想建议添加 UNIQUE 约束。这将更接近地匹配 PRIMARY KEY 的语义。
  • 不不不!一张表上只能有一个 auto_increment 列,并且它必须是一个键。
  • 哎呀,我的错。感谢您接听!
【解决方案2】:

要成为自动增量列 - 列需要是主键或具有索引。向id 列添加索引。然后你可以让它自动递增

alter table merge_info add index id (id);
ALTER TABLE merge_info modify COLUMN id int auto_increment;

SQLFiddle demo

【讨论】:

    【解决方案3】:

    正如错误消息所示,每个表只能有一个主键。您可能能够拥有一个复合主键(即由多个列组成的主键)。您可以添加约束以使列的行为类似于主键。您可以要求 NOT NULL 和 UNIQUE,添加 AUTO_INCREMENT 语义,并在列(或复合列组)上添加索引。

    (澄清:您可以将 apply AUTO_INCREMENT 应用于单个列...约束和索引可以在复合列和单个列上完成)。

    【讨论】:

      猜你喜欢
      • 2013-03-01
      • 2012-04-16
      • 2013-07-27
      • 2011-08-23
      • 1970-01-01
      • 2021-07-13
      • 2015-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多