2011-07-19 57 views
8

的列我有以下的主鍵的表:MySQL的:改變我的PRIMARY KEY

PRIMARY KEY (`Id`,`InputOutputConfigurationServerAccountId`,`Identifier`) 

我想修改此,這樣的PK只是Id列。我該怎麼做呢?

+1

'DROP PRIMARY KEY','ADD PRIMARY KEY ...' –

回答

19

的問題似乎是,你有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`) 
) 
4
  1. 刪除舊的PK ALTER TABLE table_name DROP PRIMARY KEY
  2. 添加新的PK ALTER TABLE table_name ADD PRIMARY KEY (Id)
+1

邁克,當我試圖刪除主鍵,我得到以下錯誤:'#1075 - 不正確的表定義;只能有一個自動列,並且必須將其定義爲密鑰' – StackOverflowNewbie

+0

之前刪除auto_increment。 – Mike