我有一个表,主键如下:
PRIMARY KEY (`Id`,`InputOutputConfigurationServerAccountId`,`Identifier`)
我想修改这个,使PK只有Id
列。我该怎么做呢?
问题似乎是您将Id
定义为auto_increment
。您需要首先将其更改为普通int,然后将其更改为auto_increment。
试试这个:
ALTER TABLE SO1 MODIFY COLUMN ID INT;
ALTER TABLE SO1 DROP PRIMARY KEY;
ALTER TABLE SO1 ADD PRIMARY KEY (id);
ALTER TABLE SO1 MODIFY COLUMN ID INT AUTO_INCREMENT;
下面是上面的一个测试(顺便说一句,如果我没有先修改列,我得到了你在评论中提到的错误):
drop table if exists SO1;
create table SO1 (
id int auto_increment,
InputOutputConfigurationServerAccountId int,
Identifier int,
PRIMARY KEY (`Id`,`InputOutputConfigurationServerAccountId`,`Identifier`)
);
ALTER TABLE SO1 MODIFY COLUMN ID INT;
ALTER TABLE SO1 DROP PRIMARY KEY;
ALTER TABLE SO1 ADD PRIMARY KEY (id);
ALTER TABLE SO1 MODIFY COLUMN ID INT AUTO_INCREMENT;
show create table SO1;
All executed OK。最终输出:
CREATE TABLE `SO1` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`InputOutputConfigurationServerAccountId` int(11) NOT NULL DEFAULT '0',
`Identifier` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`)
)
- 删除旧的PK
ALTER TABLE table_name DROP PRIMARY KEY
- 添加新的PK
ALTER TABLE table_name ADD PRIMARY KEY (Id)