我有一个包含以下主键的表:
PRIMARY KEY (`Id`,`InputOutputConfigurationServerAccountId`,`Identifier`)
Run Code Online (Sandbox Code Playgroud)
我想修改它,以便PK只是Id列.我该怎么做呢?
Boh*_*ian 29
问题似乎是你Id定义为auto_increment.您需要先将其更改为plain 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;
Run Code Online (Sandbox Code Playgroud)
以上是对上述内容的测试(顺便说一下,如果我没有先修改列,我收到了你在其他答案评论中提到的错误):
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;
Run Code Online (Sandbox Code Playgroud)
全部执行好了.最终产出:
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`)
)
Run Code Online (Sandbox Code Playgroud)
ALTER TABLE table_name DROP PRIMARY KEYALTER TABLE table_name ADD PRIMARY KEY (Id)| 归档时间: |
|
| 查看次数: |
39294 次 |
| 最近记录: |