如何创建第二个主列(自动增量)[重复]
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 应用于单个列...约束和索引可以在复合列和单个列上完成)。
【讨论】:
以上是关于如何创建第二个主列(自动增量)[重复]的主要内容,如果未能解决你的问题,请参考以下文章