2012-05-09 3 views
3

У меня есть следующий SQL I триггер в приложении C#.SQL Not Auto-incrementing

Все работает хорошо, но таблица идентификаторов не увеличивается автоматически. Он создает значение 1 для первой записи, а затем не допускает других вставок из-за невозможности создания идентификатора unquie.

Вот 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

Как описано выше, вы даже не должны получать '1' в поле id. Какова ваша заявка на вставку? Даже если вы измените его, включив столбец 'identity' (в соответствии с ответами здесь), ваша вставка также может быть проблемой. – MatBailie

ответ

8

вам нужно указать ее начальное значение и приращение. (Плюс, я не думаю, что есть integer ключевое слово ....)

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

первое значение является семенем

второй является дельта между увеличением

Вопрос вы можете спросить:

Дельта между увеличениями? зачем мне это нужно? его всегда 1 .... ??

хорошо - да и нет. иногда вы хотите оставить промежуток между строками - чтобы впоследствии вы могли вставлять строки между ... специально, если этот кластеризованный индекс этим ключом ... и скорость важны ... поэтому вы можете предварительно создать его, чтобы оставить пробелы.

p.s. не стесняйтесь слышать другие сценарии от наблюдателей.

+0

Вставка между инкрементными записями выглядит так, как будто вы придавали больше значения идентификатору, отличному от уникальности. – JeffO

2

Необходимо указать идентификатор.

id int IDENTITY(1,1) NOT NULL