2010-10-16 186 views
0

我想打一個AUTO_INCREMENT列在數據庫表中,這裏是語法我寫:自動遞增列

create table comments 
(
    name varchar(20), 
    mail varchar(30), 
    comment varchar(100), 
    com_no int auto_increment 
); 

,我也得到了以下錯誤:

ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

然後我做到了作爲主鍵:

create table comments 
(
    name varchar(20), 
    mail varchar(30), 
    comment varchar(100), 
    com_no int primary_key auto_increment 
); 

,我也得到了以下錯誤:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'primary_key auto_increment,name varchar(20),mail varchar(30),comment varchar(100' at line 1

有什麼問題?

+0

你使用了哪個數據庫? – Oded 2010-10-16 13:34:26

+0

當你問一個特定於MySQL的問題時(因爲大多數其他SQL RDBMS不使用AUTO_INCREMENT),那麼你應該用mysql標籤標記你的問題。 – 2010-10-16 13:35:31

回答

4

沒有下劃線的是PRIMARY KEY

create table comments 
(
    name varchar(20), 
    mail varchar(30), 
    comment varchar(100), 
    com_no int primary key auto_increment 
); 

create table comments 
(
    name varchar(20), 
    mail varchar(30), 
    comment varchar(100), 
    com_no int auto_increment, 
    primary key(`com_no`) 
); 
+0

int無符號可能會更好 – 2010-10-16 13:46:49

2
create table comments(
    name varchar(20), 
    mail varchar(30), 
    comment varchar(100), 
    com_no int auto_increment, 
    PRIMARY KEY (com_no) 
); 

(按照上線MySQL手冊)。

+0

+1。打我吧! ...可能需要NOT NULL ... – 2010-10-16 13:37:48

+0

是的,但是你的開頭部分會更加精緻。 – 2010-10-16 13:39:07

1

正確的語法是這樣的,例如:

CREATE TABLE `admin` (
    `id` INT(5) UNSIGNED NOT NULL AUTO_INCREMENT, 
    `userid` VARCHAR(50) NULL DEFAULT '0', 
    `pwd` VARCHAR(50) NULL DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) 
+0

id int unsigned auto_increment主鍵完全有效。不知道爲什麼你指定了5的顯示寬度,在這種情況下,爲什麼還要打擾一個? – 2010-10-16 13:49:33

2
create table comments 
(
    name varchar(20), 
    mail varchar(30), 
    comment varchar(100), 
    com_no int NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (com_no) 
); 

ref