如何创建第二个主列(自动增量)[重复]

Posted

技术标签:

【中文标题】如何创建第二个主列(自动增量)[重复]【英文标题】: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 

【问题讨论】:

我对你的问题感到困惑;您当然可以在不作为主键的情况下使列自动递增。这真的是这里唯一的问题,还是有其他问题? 请显示您用于添加自动增量列的代码。 如何在没有主键的情况下自动递增 【参考方案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 应用于单个列...约束和索引可以在复合列和单个列上完成)。

【讨论】:

以上是关于如何创建第二个主列(自动增量)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在ms访问中重置自动增量字段[重复]

PHP - 如何使用自动增量更新表(值++)[重复]

Oracle自动增量[重复]

如何重置 Access 表的自动编号字段? (它不是从 1 开始的)[重复]

第二个CREATE语句上的Mysql创建表错误[重复]

如何更改主键自动增量,以便在删除行时不会跳过值[重复]