的列我有以下的主鍵的表:MySQL的:改變我的PRIMARY KEY
PRIMARY KEY (`Id`,`InputOutputConfigurationServerAccountId`,`Identifier`)
我想修改此,這樣的PK只是Id
列。我該怎麼做呢?
的列我有以下的主鍵的表:MySQL的:改變我的PRIMARY KEY
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;
全部執行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`)
)
ALTER TABLE table_name DROP PRIMARY KEY
ALTER TABLE table_name ADD PRIMARY KEY (Id)
邁克,當我試圖刪除主鍵,我得到以下錯誤:'#1075 - 不正確的表定義;只能有一個自動列,並且必須將其定義爲密鑰' – StackOverflowNewbie
之前刪除auto_increment。 – Mike
'DROP PRIMARY KEY','ADD PRIMARY KEY ...' –