2010-01-30 75 views
142

我試圖修改一個表,使其成爲主鍵列AUTO_INCREMENT之後的事實。我曾嘗試以下SQL,卻得到了一個語法錯誤:Mysql - 將列改爲AUTO_INCREMENT

ALTER TABLE document 
ALTER COLUMN document_id AUTO_INCREMENT 

我做得不對,或者這是不可能的?

 
+--------------------+ 
| VERSION()   | 
+--------------------+ 
| 5.0.75-0ubuntu10.2 | 
+--------------------+ 

回答

274
ALTER TABLE document MODIFY COLUMN document_id INT auto_increment 
+3

我很好奇爲什麼你會建議INT(4)。任何特定的原因? –

+2

@Steven Oxley,因爲我以這種方式宣佈了我的牌桌。 –

+27

在圓括號之間指定一個數字對MySQL整數類型來說完全沒有*(沒關係,幾乎沒有)。唯一可能受數字影響的是顯示寬度,這取決於客戶端。但不要被欺騙,並認爲它的工作方式與VARCHAR和DECIMAL類型相同 - 在這種情況下,您可以在其中存儲的數據量實際上是指定的,而INT的特定風格始終允許存儲精確相同的數值範圍 –

3

AUTO_INCREMENT是列的數據類型的一部分,你必須重新定義列的完整數據類型:

ALTER TABLE document 
ALTER COLUMN document_id int AUTO_INCREMENT 

int爲例,你應該把它設置爲鍵入列之前)

4

您必須指定auto_increment指令之前的列的類型,即ALTER TABLE document MODIFY COLUMN document_id INT AUTO_INCREMENT

+1

它應該是'MODIFY COLUMN' – shxfee

58

羅馬是正確的,但請注意,auto_increment列必須是PRIMARY KEY或UNIQUE KEY的一部分(幾乎100%的情況下,它應該是構成PRIMARY KEY的唯一列):

ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY 
+9

+1。如果在創建表時未定義,則需要主鍵。 – 2012-04-13 09:07:35

4

的SQL要做到這一點是:

ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT; 

有一對夫婦的,你的SQL可能無法正常工作的原因。首先,您必須重新指定數據類型(在這種情況下爲INT)。此外,您嘗試更改的列必須編入索引(它不必是主鍵,但通常這就是您想要的)。此外,每個表格只能有一個AUTO_INCREMENT列。所以,你不妨運行下面的SQL(如果你的列沒有被索引):

ALTER TABLE `document` MODIFY `document_id` INT AUTO_INCREMENT PRIMARY KEY; 

您可以找到MySQL的文檔中的詳細信息:http://dev.mysql.com/doc/refman/5.1/en/alter-table.html的修改列的語法和http://dev.mysql.com/doc/refman/5.1/en/create-table.html有關指定列的詳細信息。

2

AUTO_INCREMENT是列的數據類型的一部分,你必須重新定義列的完整數據類型:

ALTER TABLE document 
MODIFY COLUMN document_id int AUTO_INCREMENT 

(INT爲例,你應該把它設定爲列前有型)

2

如果沒有上述工作嘗試這一點。這是我在MYSQL中做的,是的,你需要寫兩次列名(document_id)。

ALTER TABLE document 
CHANGE COLUMN document_id document_id INT(11) NOT NULL AUTO_INCREMENT ; 
2

以下聲明適用。請注意,您需要再次提及的數據類型的列名

ALTER TABLE document 
MODIFY COLUMN document_id int AUTO_INCREMENT; 
4

在我而言,當我把非空它只是工作。我認爲這是一個限制。

ALTER TABLE document MODIFY COLUMN document_id INT NOT NULL AUTO_INCREMENT;

0

要修改我們使用改變和修改關鍵字mysql的列。假設我們已經創建瞭如下表格:

create table emp(
    id varchar(20), 
    ename varchar(20), 
    salary float 
); 

現在我們要將列ID的類型修改爲具有自動增量的整數。你可以用以下命令做到這一點:

alter table emp modify column id int(10) auto_increment; 
0

ALTER TABLE tbl_user修改列的ID INT(10)AUTO_INCREMENT;

-3

使用下列查詢:

ALTER TABLE YourTable DROP COLUMN IDCol 

ALTER TABLE YourTable ADD IDCol INT IDENTITY(1,1) 
0

上表語法:

CREATE TABLE apim_log_request (TransactionId varchar(50) DEFAULT NULL); 

爲了改變TRANSACTIONID自動遞增使用此查詢

ALTER TABLE apim_log_request MODIFY COLUMN TransactionId INT auto_increment; 
-1

當你正在重新定義列再一次,您必須再次指定數據類型,並將auto_increment添加到它,因爲它是數據的一部分YPE。

ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT;