如何创建第二个主列(自动增量)

时间:2014-08-04 19:05:40

标签: php mysql

我有这样的表

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

MergeId已经被指定为主键,现在我想要一个新的列ID(AutoIncrement),但是当我尝试创建它时,我就像#34; cant create table一个表应该只有一个主键" 但我不能将我的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 

3 个答案:

答案 0 :(得分:4)

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

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

SQLFiddle demo

答案 1 :(得分:1)

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

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

答案 2 :(得分: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