我有这样的表
------------------------
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
答案 0 :(得分:4)
要成为自动增量列,列需要是主键或具有索引。向id
列添加索引。然后你可以让它自动增加
alter table merge_info add index id (id);
ALTER TABLE merge_info modify COLUMN id int auto_increment;
答案 1 :(得分:1)
由于错误消息表明每个表只能有一个主键。您可以拥有复合主键(即由多列组成的主键)。您可以添加约束以使列的行为与主键类似。您可以要求NOT NULL和UNIQUE,添加AUTO_INCREMENT语义,并在列(或列的复合组)上添加索引。
(澄清:您可以将AUTO_INCREMENT应用于各个列......约束和索引可以在复合材料和单列上完成。)
答案 2 :(得分:1)
您只能拥有一个主键。但是,您可以将列设置为自动增量。我认为你试图加入的是另一张桌子,这是正确的吗?我相信它们被称为外键,但我认为只有MSSQL,从未在MySQL中使用它们。
自动增量是你所做的事情。 PHPMyAdmin您只需选择它作为列属性之一。
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