2012-05-09 87 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