2011-05-11 49 views
6

將假設我們有一個表只有一列,ID(這是主鍵)MySQL的 - 在表中只有一個自動遞增列

我們如何插入新行到表中沒有指定一個ID?

我想這

INSERT INTO A (`id`) VALUES (NULL) 

,它不工作

編輯:我忘了提,ID,主鍵有AUTO_INCREMENT和NOT NULL屬性。

編輯2:運行查詢時確切的錯誤以上是

Column 'id' cannot be null 
+0

爲什麼不與我們分享它失敗的原因? – 2011-05-11 09:34:01

+0

PK字段不允許有重複值或NULL值 – Dalen 2011-05-11 09:34:01

+0

主鍵字段必須爲NOT NULL。 – 2011-05-11 09:36:23

回答

10

只要「身份證」作爲自動遞增使能(假設ID爲整數),你可以做:

INSERT INTO A (id) values (null) 

和「身份證」將保持每次遞增。

+0

我不認爲這有效。我試過了,它試圖插入數字0.由於我試圖插入5次,它會產生重複的輸入錯誤。 – arvinsim 2011-05-11 09:44:28

+1

@arvinsim:您的設置一定有問題。 MySQL的同時接受'NULL'和'0'作爲一個AUTO_INCREMENT列值,並且將它們解釋爲是指「使用的下一個ID」。 – sleske 2011-05-11 10:32:23

+0

這對我有一個MySQL數據庫。它實際上每次都會增加id。 – Marcin 2011-07-18 14:32:57

0

嘗試沒有``.. 如:

INSERT INTO A(SID)VALUES(NULL ); //我用SID代替ID ...

工作得很好,我..

而且wwhile創建表A,指定唯一(SID)... 即

創建表A( sid int(3)not null auto_increment unique(sid));

+2

引述風格不會改變任何東西 – 2011-05-11 09:40:09

2

只有當你使用一個AUTO_INCREMENT主鍵(PK),因爲每個PK必須有一個唯一的,非空值的作品。

drop table if exists A; 
create table A 
(
id int unsigned not null auto_increment primary key 
) 
engine=innodb; 

insert into A (id) values (null),(null); 

mysql> select * from A order by id; 
+----+ 
| id | 
+----+ 
| 1 | 
| 2 | 
+----+ 
2 rows in set (0.00 sec) 
+0

是的,它是一個自動遞增的字段 – arvinsim 2011-05-11 09:36:35

+1

除非我失去了一些東西,那就是在這個問題中描述的設置: - ? – 2011-05-11 09:37:48

0

我有類似的問題,然後我注意到我沒有應用更改時,我將id更改爲主鍵+非空+自動增量。