2010-06-22 68 views
17

我將我的mysql數據庫表從id(auto)更改爲uid。mysql,alter column刪除主鍵和自動增量

ALTER TABLE companies DROP PRIMARY KEY; 
ALTER TABLE companies ADD PRIMARY KEY (`uuid`); 

這是我的錯誤..

[SQL] ALTER TABLE companies DROP PRIMARY KEY; 
[Err] 1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key 

我的理解,我需要因爲我放棄它作爲主鍵的ID改爲非自動增量?更改列以刪除主鍵和自動增量的語法是什麼?

ALTER TABLE companies change id id ?????????? int(11) 

回答

24

如果您需要刪除自動遞增,並從單一的SQL語句id列的主鍵,這應該這樣做:

ALTER TABLE companies DROP PRIMARY KEY, CHANGE id id int(11); 

事實上,你應該能夠做到一切都在一個單一的ALTER TABLE查詢:

ALTER TABLE companies 
DROP PRIMARY KEY, 
CHANGE id id int(11), 
ADD PRIMARY KEY (uuid); 
+0

如果我這樣做3語句它將工作.. ALTER TABLE公司更改id id int(11); ALTER TABLE公司DROP PRIMARY KEY; ALTER TABLE公司ADD PRIMARY KEY(uuid); – Brett 2010-06-22 05:28:54

+1

在我的情況下,我只想放棄自動增量。我試過這樣的:'ALTER TABLE myTable CHANGE _id _id INT(12)',但它說「CHANGE附近的語法錯誤」。我在這裏做錯了什麼? – 2016-06-07 02:35:24

2

用於刪除自動遞增的查詢是:

alter table companies DROP PRIMARY KEY, 
change id id int(11) NOT NULL 

現在您可以看到表格的結構沒有自動增量。

如果你想添加主鍵的另一列,那麼如果你想刪除自動遞增,主鍵,並添加主鍵在同一個查詢中新列中使用此查詢

alter table companies add PRIMARY KEY(uuid) 

,然後用此查詢

alter table comapnies DROP PRIMARY KEY, 
    change id id int(11) NOT NULL, 
    add PRIMARY KEY(uuid) 
4

當你不改變列的名稱,你可以使用MODIFY

ALTER TABLE `companies` MODIFY `id` int(11), 
          DROP PRIMARY KEY, 
        ADD PRIMARY KEY (`uuid`); 

通過在一個alter語句中這樣做,它也被視爲原子,所以查詢之間不存在不一致的機會(與在行中運行多個語句不同)。