【问题标题】:SQL Not Auto-incrementingSQL 不是自动递增的
【发布时间】:2012-05-09 11:44:49
【问题描述】:

我在 C# 应用程序中触发了以下 SQL。

一切正常,但 ID 表不会自动递增。它为第一个条目创建值 1,然后由于无法创建 unquie 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
)";

我敢肯定这是一个小学生的错误。

【问题讨论】:

  • 如上所述,您甚至不应该在 id 字段中获得1。你的插入语句是什么?即使您将其更改为包含 identity 列(根据此处的答案),您的插入也可能是一个问题。

标签: sql sql-server tsql auto-increment


【解决方案1】:

你需要指定它的种子和增量。(另外,我不认为有integer关键字......)

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

第一个值是种子

第二个是增量之间的增量

一个你可能会问的问题:

增量之间的增量?我为什么需要那个?它总是 1 ....??

好吧 - 是的,不是的。有时你想在行之间留下一个间隙——这样你以后可以在……之间插入行,特别是如果它的聚集索引是由那个键组成的……而且速度很重要……所以你可以预先设计它以留下间隙。

附言很高兴从观察者那里听到其他情况。

【讨论】:

  • 在增量记录之间插入似乎除了唯一性之外,您对 ID 赋予了更多意义。
【解决方案2】:

您需要提及身份。

id  int IDENTITY(1,1) NOT NULL

【讨论】:

    猜你喜欢
    • 2016-04-22
    • 1970-01-01
    • 2018-01-01
    • 2014-04-15
    • 2012-11-26
    • 2015-07-05
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    相关资源
    最近更新 更多