2012-05-09 148 views
3

我在C#應用程序中觸發了以下SQL。SQL不自動遞增

所有工作正常,但ID表不會自動增加。它爲第一個條目創建1的值,然後由於無法創建不可識別的ID而不允許其他插入。

這裏是SQL:

CREATE TABLE of_mapplist_raw (
    id   integer PRIMARY KEY NOT NULL, 
    form_name varchar(200) NOT NULL, 
    form_revi varchar(200) NOT NULL, 
    source_map varchar(200), 
    page_num varchar(200) NOT NULL, 
    fid   varchar(200) NOT NULL, 
    fdesc  varchar(200) NOT NULL 
)"; 

我敢肯定,它在發揮一個學生的錯誤在這裏。

+1

如上所述,您甚至不應該在id字段中獲得'1'。你的插入語句是什麼?即使您將其更改爲包含「身份」列(根據此處的答案),您的插入也可能是一個問題。 – MatBailie

回答

8

你需要指定它的種子和增量。(另外,我不認爲有integer關鍵字....)

id [int] IDENTITY(1,1) NOT NULL, 

的第一個值是種子

第二個是增加

一個問題之間的三角洲你可能會問:

增量之間的增量?我爲什麼需要這個?它總是1 .... ??

好 - 是的,沒有。有時候你想在行之間留下一個空白 - 所以你可以稍後在...之間插入行......特別是如果它的聚簇索引是按鍵......並且速度很重要...所以你可以預先設計它來留下空白。

p.s.我很高興聽到其他觀察者的情景。

+0

在增量記錄之間插入看起來好像你給了唯一性以外的ID更多的含義。 – JeffO

2

您需要提及身份。

id int IDENTITY(1,1) NOT NULL